1.事物的基本概念
我在另一片博客记录了事物的一些基本概念的笔记
https://blog.csdn.net/u012430402/article/details/80378178
2.事物并发引起的问题
· 脏读(Dirty Read):一个事务读取另外一个事务还没有提交的数据
· 幻读:事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据
· 不可重复读(Non-Repeatable Read):在一个事务中两次读同一行数据,但是这两次读到的数据不一样
3.事物的隔离级别
用于解决事物并发引起的问题
· 读未提交(Read uncommitted):不能防止脏读、不可重复读、幻读
· 读已提交(Read committed):可以防止脏读,但不能防止不可重复读、幻读
· 可重复读(Repeatable read):可以脏读、不可重复读,但不能防止幻读
· 串行化(Serializable):可以防止脏读、不可重复读、幻读
以上事物的隔离级别分别为1、2、4、8
事物的隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大
4.Spring中七种事物的传播行为
PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。
PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。
PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
参考博客:https://blog.csdn.net/hsgao_water/article/details/52860380