1.REQUIRED
当前存在事务,加入事务;当前不存在事务,就创建新事务
2.SUPPORT
当前存在事务,加入事务;当前不存在事务,就以非事务的方式运行
3.MANDATORY
当前存在事务,加入事务;当前不存在事务,就抛出异常
4.REQUIRE_NEW
不管当前有没有事务,都重新创建一个新事务
5.NOT_SUPPORT
以非事务的方式运行,如果当前存在事务,暂停当前事务
6.NEVER
以非事务方式运行,如果当前存在事务,就抛出异常
7.NESTED
当前没有事务,就创建一个新事务;如果有,就在当前事务中嵌套其他事务
NESTED和REQUIRES_NEW的区别:
他与PROPAGATION_REQUIRES_NEW的区别是,PROPAGATION_REQUIRES_NEW另起一个事务,将会与他的父事务相互独立,而Nested的事务和他的父事务是相依的,他的提交是要等和他的父事务一块提交的。也就是说,如果父事务最后回滚,他也要回滚的。
而Nested事务的好处是他有一个savepoint。