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.串行化 皆可避免