[事物唯一性]spring AOP 事物回滚不同步使用spring声明式事物管理,配置如下:利用Aop切面管理所有业务service类,进行事物管理.但service层在调用多个dao操作时,无法完成事物同步回滚.DAO_A.save(a);DAO

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 23:34:59
[事物唯一性]spring AOP 事物回滚不同步使用spring声明式事物管理,配置如下:利用Aop切面管理所有业务service类,进行事物管理.但service层在调用多个dao操作时,无法完成事物同步回滚.DAO_A.save(a);DAO
xU[OG++HFrlcHd mBI>TU4[ȮΥO s($H" `,SB,!Q$Ծiwf9LoEjf=GsMVƹ(Fɬ/"a6["oiq0Kif%Y%/'%2 jͶn1#Jެ;nhٜ oB8^JWf>yO6:.ҹCɑI^Gwu_z]X_ eop}*ǭOHsL7% q{/'WZV) yR,C:_r2Eu[4k~ض6xqcmNhwH=i!IlnJoCN'PvҸ!EG! Ȋq),qr_3uqn,0uljj#hY|_tGFF?$_/7 uy?ʞ?!c31|_yqr@FVt8ƏN>`ϙNN H^|KMn=;O\B5RxJ*^q4S\nu`5U FSX[Ж"[8t}K-܄uk@W02)>-gҪ꼀T[?2[nRP,. ty\ą{p$'+ NDp4!,ŒCB($)@R4$Kh0(BX"QKKPL%PLB8 P"RH _ \?4װ0:{ 9!l=kyA1{3ڬ2iCkO~()`s!6! }Vv%g|}FZSr[ރ{_Ddi_7kLJEy j+;23*| qiU%i,N恐=TKQmK-U{w^`8Y;=>deΙ#sQnY22t;Gμ(<9 PaMS5焌ɕ4 M秬#rBNSNNb'zsE ,z\7q ,S׿iƆ+ a2s RܞBf

[事物唯一性]spring AOP 事物回滚不同步使用spring声明式事物管理,配置如下:利用Aop切面管理所有业务service类,进行事物管理.但service层在调用多个dao操作时,无法完成事物同步回滚.DAO_A.save(a);DAO
[事物唯一性]spring AOP 事物回滚不同步
使用spring声明式事物管理,配置如下:
利用Aop切面管理所有业务service类,进行事物管理.
但service层在调用多个dao操作时,无法完成事物同步回滚.
DAO_A.save(a);
DAO_B.save(a);
当其中一个dao执行出错时,hinbernate不会立即抛出异常,而且等所有代码执行完毕后在抛出异常.
这时其中一个dao层的sql还会执行.不能同步回滚,不解.
利用手动回滚,可正常同步回滚事物.
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);;
/HibernateTransactionManager txManager = new HibernateTransactionManager();
TransactionStatus status = txManager.getTransaction(def);;
txManager.rollback(status);
请spring高手解释原因何在?是否配置有问题?
注:不使用TransactionProxyFactoryBean代理配置形式.

[事物唯一性]spring AOP 事物回滚不同步使用spring声明式事物管理,配置如下:利用Aop切面管理所有业务service类,进行事物管理.但service层在调用多个dao操作时,无法完成事物同步回滚.DAO_A.save(a);DAO
总结-spring事物同步回滚/提交:
1.保证事物传播机制正确配置
2.session会话管理配置
3.DataAccess层异常是否抛出,如果抛出,service也需要抛出(throw e),要么全不抛,要么全抛,直至Web层catch().
4.保证抛出的异常是否在spring aop事物管理范围内,RuntimeException异常,UncheckException异常.如自定义异常需继承运行时异常.在抛出.
5.如service层需抛出自定义异常,异常又不为运行时异常,需织入一个检查异常,spring默认只处理RuntimeException的子类和Error,自定义异常需transactionAttribute节点底下定义你自己的rollback rules才能被Spring正确管理,源码:RuleBasedTransactionAttribute.
问题解决.