1、是的
2、会的
3、分别commit的
分别 commit 的话, Transaction 还能起作用, 那这个事务是怎么工作的?
@过于执著: 不好意思,刚说错了 答案是:1、会 2、会 3、调用就连
上面几位的回复,
1.会,2 会 我没意见
3.我觉得不能笼统的回复,这要具体情况具体分析的,hibernate/mybatis是可以通过spring来统一管理事务,如果hibernate/mybatis都配置成使用同一个事务管理器,是在最后离开action时统一提交的。我曾经就在项目中,将hibernate与mybatis混用,交给spring使用同一事务管理器来统一管理事务。
补充一下,其实这个问题很容易验证的,这个问题说白了,就是三种不同机制的DAL技术,能不能控制事务是否统一管理,为简化问题,只保留2种就足够了(2种验证通过的话,3种,4种,N种自然也可以)。
假如保留hibernate/mybatis这二种,二者都insert同样的记录(主键刻意相同),如果是分开提交的,那么,执行完以后,hibernate在前在,commit成功,mybatis失败,最终 db里会有一条记录。
如果用spring配置成二者使用相同的事务管理器,由于是同一个事务,mybatis的失败,会导致hibernate的事务也回滚,最终db中一条记录都没有.