名为Aby
的EJB方法调用另一个名为Bob
Bob
标有@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
bob
事务何时提交?: a)bob
调用结束时
b)aby
调用结束时
答案 0 :(得分:35)
我认为A是对的。当调用方法Bob时,它会为其创建新事务,并且方法Aby将被挂起,直到Bob事务被提交为止。
另请注意,它必须是来自其他bean的方法才能使其成为事务性的,从同一个bean调用的方法不会充当业务方法。
有关详细说明,请参阅此article。
答案 1 :(得分:6)
实际上,我认为替代方案是正确的。参见:
EJB 3.0 - Nested Transaction != Requires New?
我还做了一些研究,并查看db(Hyper Sonic)日志,以实际查看它何时在db中提交,并在REQUIRES_NEW方法完成时提交。但是由于处理事务的容器可能会根据容器而改变。我在调试时使用了JBoss。和Hibernate(值得一提,因为我通过检查db日志来测试它)。 我认为因为你询问交易而涉及数据库写入。
我的想法与之前的答案不同,所以说服会很有趣。