日期:2014-05-20  浏览次数:20661 次

请教大家Spring+iBatis的事务控制在哪里比较好?
一个用Spring2.5+iBATIS2的框架,在Spring里管理事务好还是在iBATIS里管理事务好?
都有什么理由吗?


------解决方案--------------------

我倒不是不喜欢使用spring的事务功能,它的确做了很多事情,但是始终有些场景不是很适合使用。首先,spring的事务使用起来比较笨重,声明性的使用方法还好,但是要通过AOP,AOP相对麻烦一点,而且性能不高。编程性的使用方法用起来非常麻烦,使用模板的方法比较难看,不使用模板也难看。而且spring的事务速度会比较慢。其实iBATIS的事务做得挺简单的,其实就是JDBC的事务了.
但ibatis做得比较鸡肋,仅仅是使用了jdbc的定位,hibernate里面这个特性倍受推荐,其实也做得并不完美。


------解决方案--------------------
事务应该在逻辑层,而不是在数据层。明显ibatis在数据层,是与hibernate一个层次的。

所以还是在Spring里面控制比较好。当然,前提是你喜欢他的管理方式了。 我个人认为还可以
------解决方案--------------------
我觉得就代码的简洁性和重用性来说,Spring好点
------解决方案--------------------
spring层的话事务是在需要的地方加,如业务方法,
是要xml配置的,比如以save开头的方法就会有事务,我一般把受事务控制的方法用do开头。
给你做参考
http://topic.csdn.net/u/20080603/20/d43c6f5c-21ed-4f50-be13-2905a68605bd.html

利用anotation也可以加事务
http://topic.csdn.net/u/20080602/22/2414f4fa-671a-4a20-889f-8b32aafba6cc.html
------解决方案--------------------
按1楼的话来说我们不应该把事务交给spring?那假如说放在ibatis这里,这岂不是把事务放在DAO层吗?有的时候一个业务里面调用多次DAO,应该把这个整个业务层用同一个事务来管理的!

所以我还是支持,事务交给spring,并且用aop来处理这些事务,1.5以上的话用注解的形式,驱除了很多烦躁的xml配置