gpt4 book ai didi

jakarta-ee - EJB 3.0 - 嵌套事务!= 需要新的?

转载 作者:行者123 更新时间:2023-12-02 11:46:54 28 4
gpt4 key购买 nike

我刚刚读了《精通 EJB 3.0》的事务第 (10) 章,现在我对嵌套事务感到困惑。

书上说

"The EJB-defined transaction manager does not support nested transactions; it requires support for only flat transactions." (Site 278, Note)

这个事实不仅在这本书中有描述,我在其他书籍/网站中也发现了这种说法。

但是,如果我从“需要新”带注释的方法调用“需要新”带注释的方法,那么我所拥有的是一个嵌套事务,不是吗?我可以回滚内部事务或提交它,而不影响外部事务。如果我希望中止外部事务,我会抛出一个 EJBException,然后整个事务将被回滚。

那么这只是 EJB 3.0 规范不需要的行为还是我误解了什么?我只是无法区分嵌套事务和所描述的行为之间的区别。

问候诺曼

最佳答案

RequiresNew 不会创建嵌套事务,因为第一个事务在第二个事务运行时被挂起。嵌套事务如下所示:

Nested transaction example
> method1 - begin tran1
> method2 - begin tran2
workA
< method2 - commit tran2
< method1 - rollback tran1 (tran2 also rolled back because it's nested)

相反,RequiresNew 看起来像这样:

EJB RequiresNew example
> method1 - begin tran1
> method2 - suspend tran1, begin tran2
workA
< method2 - commit tran2, resume tran1
< method1 - rollback tran1 (tran2 remains committed)

关于jakarta-ee - EJB 3.0 - 嵌套事务!= 需要新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com