第一大类:必须有事务的
1:REQUIRED(默认)
如果没有,就新建一个事务,如果有,就加入当前事务。
2:REQUIRES_NEW
强制性一定会新建事务。如果原来有,就挂起。
这里简单解释下挂起的含义:就是你执行你的,跟我没关系。你的事务对我没有影响。
3.NESTED
如果没有,新建一个事务,如果有,就在当前事务中嵌套。
嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。
4:MANDATORY
如果当前有事务,就使用当前事务,如果没有,就抛出异常。
第二大类:可有可无的
1:SUPPORTS
如果当前有事务,就使用,没有就算了,以非事务方式运行(非事务就是没有事务)。
第三大类:死活不需要事务
1:NEVER
强制性以非事务方式运行,如果当前存在事务,则抛出异常。
2:NOT_SUPPORTED
没有事务就非事务方式执行,如果有,就挂起当前事务,继续以非事务方法运行。