spring里面事务的传播属性和事务隔离级别。
Propagation:事务的传播属性
7、PROPAGATION_NESTED
一个事务是和父事务相依的,这个事务是和父事务一起提交的。如果回滚,则可使用savepoint还原点,如果父事务回滚到还原点,这个事务也要回滚到还原点,但是这个事务是可以再还原点之后想办法执行其他的事务来实现自己的业务逻辑。
6、PROPAGATION_NEVER
不在事务中运行。事务A的级别为PROPAGATION_REQUIRED,事务B的级别为PROPAGATION_NEVER将会抛出异常。
5、PROPAGATION_REQUIRED_NEW
事务A:PROPAGATION_REQUIRED_NEW
事务B:PROPAGATION_REQUIRED
如果事务A执行时,事务B挂起,A会执行一个新的事务,等待事务A完成后,再执行事务B。
如果执行过程中事务B挂起,则A不受影响。
4、PROPAGATION_REQUIRED
事务A和事务B均为REQUIRED,如果事务B运行在事务A的内部,则事务B不再建立新的事务,如果事务B执行时,事务A中没有,则事务B重新建立一个新的事务。如果其中有一个事务发生异常回滚,则另一个事务不论是否已经完成,均会被回滚。
3、PROPAGATION_SURPORTS
如果A在一个事务中则以事务的形式运行,如果不在一个事务中,则以非事务的形式运行。
2、PROPAGATION_NOT_SURPORTED
事务A:PROPAGATION_NOT_SURPORTED
事务B:PROPPAGATION_REQUIRED
如果事务B执行时,则事务B挂起,A以非事务的形式运行完,再执行事务B。
1、PROPAGATION_MANDATORY
只能在一个父事务中运行,只能被一个父事务调用,如果没有父事务,则会抛出异常。
Spring事务的隔离级别
1、ISOLACTION_DEFAULT 数据库的默认隔离级别
2、ISOLACTION_READ_UNCOMMITED 一个事务未提交,但已对数据库产生了操作,它允许另一个事务看到未提交的数据,容易产生脏数据、不可重复读、幻象读
3、ISOLACTION_READ_COMMITED 保证一个事务在该事务操作完成后,再读取该表数据,避免出现脏数据。
4、ISOLACTION_REPEATABLE_READ 可能出现数据的重复读取(幻象读),但不会出现脏数据、不可重复读。
5、ISOLACTION_SERIALABLE 事务的执行顺序为顺序执行,避免出现脏数据、不可重复读、幻象读。