@Transactional 事务失效记录
生活随笔
收集整理的這篇文章主要介紹了
@Transactional 事务失效记录
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼調(diào)用結(jié)構(gòu):
@Transactional public ReturnBo saveBase(BaseBo bo){ServiceA.dbMethodA();ServiceB.dbMethodB();ServiceC.dbMethodC(); }異常現(xiàn)象:
在saveBase方法中,如果 ServiceB.dbMethodB()方法實(shí)現(xiàn)中出現(xiàn)了異常,ServiceA.dbMethodA()的數(shù)據(jù)庫操作并不會(huì)回滾。
解決辦法:
ServiceA.dbMethodA();ServiceB.dbMethodB();ServiceC.dbMethodC(); 方法實(shí)現(xiàn)上均加上@Transactional
異常原因:
@Transactional注釋在saveBase()方法上,執(zhí)行dbMethodA()方法時(shí),該方法無注解,默認(rèn)新開啟一個(gè)事務(wù);執(zhí)行dbMethodB()方法時(shí),該方法無注解,也默認(rèn)新開啟一個(gè)事務(wù),那么兩個(gè)事務(wù)是隔離的。一同加上注解,將其加入同一個(gè)事務(wù)中即可。
引用一句話總結(jié):
被Spring的AOP增強(qiáng)的類,在同一個(gè)類的內(nèi)部方法調(diào)用時(shí),其被調(diào)用方法上的增強(qiáng)通知將不起作用。引用一個(gè)文章:
@Transactional 無效的解決方案
總結(jié)
以上是生活随笔為你收集整理的@Transactional 事务失效记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux tail命令_操作手册
- 下一篇: eclipse项目导入idea部署到to