本文单纯为方便自己快速查看,基本引自IT虾米网
最常用的属性是1和4。
1.PROPAGATION_REQUIRED
如果事务存在,则支持当前事务,如果没有事务则开启一个新事务。
2.PROPAGATION_SUPPORTS
如果存在事务,则支持当前事务,如果不存在,则以非事务方式执行。
3.PROPAGATION_MANDATORY
如果存在事务,则支持当前事务,如果不存在,则抛出异常。
4.PROPAGATION_REQUIRES_NEW
无论是否存在事务,都会创建一个新事务执行。如果之前有事务,则会被挂起,直到它结束才会继续执行,两个事务相互独立。
5.PROPAGATION_NOT_SUPPORTED
无论是否存在事务,都会以非事务方式执行。如果之前有事务,则会被挂起,直到它结束才会继续执行。
6.PROPAGATION_NEVER
不支持事务,如果存在一个活动事务,则会抛出异常
7.PROPAGATION_NESTED
嵌套事务。
不存在事务时相当于PROPAGATION_REQUIRED,会创建一个新事物。
存在事务时,外层事务失败回滚会导致内层回滚,而内层事务操作失败不会引起外层事务回滚。
PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别
不存在活动事务时,都相当于PROPAGATION_REQUIRED。
存在活动事务时,PROPAGATION_REQUIRES_NEW相当于存在两个独立的事务,互不影响,而PROPAGATION_NESTED则是外层会影响内层事务,内层不会影响外层