Spring嵌套事务的误解

刚开始看文档的时候,简单的以为嵌套事务就是指

方法 f1 默认机制
方法 f2 嵌套事务
f1 调用 f2。
如果 f2 抛异常 只会 f2 的操作会回滚 f1不会有任何影响

实际操作时发现 f2抛出异常 f1如果不捕获这个异常 还是会一起回滚数据的

为什么是这样

原因在于 我们潜意识里面 把异常回滚画等号了。而实际上异常只是回滚的诱因

本质上嵌套事件只是指回滚动作直接的相互影响

  • 外部事务回滚 会把嵌套内的也一起回滚
  • 嵌套事务回滚 只是把数据回滚到 savePoint

这个是数据库层面去提供支持的。

嵌套传播机制都是指事务层面的。而不是异常,Spring事务切面中对捕获到的异常,做相关的操作后,仍然是向上继续抛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值