一个名为的 EJB 方法Aby
调用另一个名为的 EJB 方法Bob
Bob
标有@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
事务何时bob
提交?:
a)bob
调用结束时
b)aby
调用结束时
c) 其他。什么时候?
一个名为的 EJB 方法Aby
调用另一个名为的 EJB 方法Bob
Bob
标有@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
bob
提交?:a)bob
调用结束时
b)aby
调用结束时
c) 其他。什么时候?
我认为A是对的。当方法 Bob 被调用时,它会为它创建新的事务,并且方法 Aby 会被挂起,直到 Bob 事务被提交。
另请注意,它必须是来自其他 bean 的方法才能使其具有事务性,从同一个 bean 调用的方法不充当业务方法。
请参阅这篇很棒的文章以获得进一步的解释。
实际上,我认为替代 a 是正确的。看:
我还进行了一些研究并查看了数据库(Hyper Sonic)日志以实际查看它何时在数据库中提交,并且在 REQUIRES_NEW 方法完成时提交。但是由于由容器来处理事务,所以它可能会根据容器而改变。我在调试时使用了 JBoss。还有 Hibernate(值得一提,因为我已经通过检查数据库日志对此进行了测试)。自从您询问事务以来,我认为涉及数据库写入。
我的想法与之前的答案不同,所以被说服会很有趣。