Spring 常用事务传播机制

@Transactional注解
1.REQUIRED Spring默认的事务传播行为。支持事务。如果已经存在一个事务中,加入到该事务中。否则,新建一个事务。
特点:
a.外层事务提交了,内层才会提交。
b.内/外只要有报错,他俩会一起回滚。
c.只要内层方法报错抛出异常,即使外层有try-catch,该事务也会回滚!
d.因为内外层方法在同一个事务中,内层只要抛出了异常,这个事务就会被设置成rollback-only,即使外层try-catch内层的异常,该事务也会回滚。

2.REQUIRES_NEW 支持事务。每次都是创建一个新事物,如果当前已经在事务中了,会挂起当前事务。
特点:
a.内层事务结束,内层就提交了,不用等着外层一起提交。
b.外层报错回滚,不影响内层。
c.内层报错回滚,外层try-catch内层的异常,外层不会回滚。
d.内层报错回滚,然后又会抛出异常,外层如果没有捕获处理内层抛出来的这个异常,外层还是会回滚的。

3.SUPPORTS 支持事务。当前有事务就支持。当前没有事务就算了,不会开启一个事物。

4.MANDATORY 支持事务,如果业务方法执行时已经在一个事务中,则加入当前事务。否则抛出异常。

5.NESTED 支持事务。如果当前已经在一个事务中了,则嵌套在已有的事务中作为一个子事务。如果当前没在事务中则开启一个事务。

6.NOT_SUPPORTED
不支持事务,如果业务方法执行时已经在一个事务中,则挂起当前事务,等方法执行完毕后,事务恢复进行。
特点:
内层方法执行完毕之后直接提交,不用等外层提交

7.NEVER
不支持事务。如果当前已经在一个事务中了,抛出异常。
特点:
外层有事务直接报错,抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值