spring事务的一些失效

spring事务的情况
主异常
主回滚,从不回滚 (@Transactional,@Transactional(propagation = Propagation.REQUIRES_NEW))
主回滚,从回滚(@Transactional,@Transactional)
从异常
从回滚,主不回滚 (@Transactional,@Transactional(propagation = Propagation.NESTED)) 要注意try catch捕获,最好是在抛异常的前面捕获
从回滚,主回滚 (@Transactional,@Transactional)
主 @Transactional 从 @Transactional 主异常 主从一起回滚 从异常 主从一起回滚

主 @Transactional 从 @Transactional(propagation = Propagation.REQUIRES_NEW)
主异常 主回滚从正常插入 从异常主则要回滚,从要回滚

主 @Transactional 从 @Transactional(propagation = Propagation.NESTED)
主异常 主从一起回滚 从异常 不影响主异常的插入

自调用 这样会导致事务失效

在这里插入图片描述

被调用方法的事务传播行为设置为PROPAGATION_REQUIRES_NEW

在这里插入图片描述

使用 nested 传播级别 + 手动捕获异常 实现小事务抛出异常独立回滚而大事务仍然可以提交

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

嵌套的@Transactional

在这里插入图片描述

propagation = Propagation.REQUIRES_NEW用法

在这里插入图片描述

private的声明这样会导致事务失效

在这里插入图片描述

在这里插入图片描述

自调用这样会导致事务失效

在这里插入图片描述

事务没有在controller层去捕获

在这里插入图片描述

在这里插入图片描述

自己注入自己的情况

在这里插入图片描述

在controller层进行捕获

在这里插入图片描述

未能捕获Exception级别的异常这样会导致事务失效

在这里插入图片描述

遇到异常设置手动回滚

在这里插入图片描述
在这里插入图片描述

设置合适的回滚异常

在这里插入图片描述
在这里插入图片描述

父子容器扫描范围导致的事务失效

在这里插入图片描述

多线程修改和查询会导致事务失效

在这里插入图片描述

在这里插入图片描述

多线程下保证事务生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样同步抛出异常,异步抛出异常均能正常回滚

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

time丶sand

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值