关于Spring的事务传播行为和Mysql事务隔离级别

关于Spring的事务传播行为和Mysql事务隔离级别

Spring的7种事务传播行为:

1.required(默认) :如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。方法A开启一个事务,方法A中执行方法B,B的事务会加入到方法A中,两者同生共死。

2.supports :如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。

3.mandatory :如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

4.requires_new :无论如何开启一个新的事务。如果一个事务已经存在,则先将这个存在的事务挂起。两个事务互不干扰。

5.not_supported :总是非事务地执行,并挂起任何存在的事务。

6.never :总是非事务地执行,如果存在一个活动事务,则抛出异常。

7.nested :如果一个活动的事务存在,则运行在一个嵌套的事务中。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。

事务的四个特性(ACID):原子性,一致性,隔离性,持久性

Mysql的事务隔离级别:

事务隔离级别             并发可能会出现的问题

1.读未提交                 脏读-不可重复读-幻读

2.读已提交                 不可重复读-幻读

3.可重复读                 幻读

4.串行化                     皆可避免