事务传播Propagation
REQUIRED:
1、使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法是必须运行在一个事务里
2、如果当前存在事务,则加入这个事务(比如加入父事务),成为一个整体(成为父事务的一部分)
SUPPORTS:
1、如果当前有事务,则使用事务,如果当前没有事务,则不使用事务
MANDATORY:
1、该传播属性强制必须存在一个事务,如果不存在,就会抛出一个异常
REQUIRES_NEW:
1、如果当前有事务,则挂起该事务,并且自己会创建一个新的事务给自己使用
2、如果当前没有事务,则会同REQUIRED
NOT_SUPPORTED:
1、如果当前有事务,则把事务挂起,自己本身不使用事务去运行数据库操作
NEVER:
1、如果当前有事务存在,则抛出异常
NESTED:
1、如果当前有事务,则开启子事务(嵌套事务),嵌套事务是独立提交或者回滚
2、如果当前没有事务,则同 REQUIRED
3、如果父事务提交,则会携带子事务一同提交
4、如果父事务回滚,会待着子事务一同回滚
5、如果子事务发生异常回滚,父事务可以选择回滚或者不回滚(选择权在父事务中)