0
A
回答
0
阉BMT中进行选择和CMT依赖于商业决策,而不是性能。
在我看来,没有最佳实践,但是这些只是一个或者更好的例子。
BMT
- 你有
Stateful
豆和全球承诺取决于其他方法的结果。通过与Stateful
一起使用BMT,您可以实现事务处理公开,并在业务决策完成时关闭/落实。 - 对于你想拥有完全控制事务边界
CMT
- 任何原因,你有一个
Stateful
,你要实现的会话同步接口知道什么时候开始交易结束等。在这种情况下,你的bean必须使用CMT - 你有一个EJB链,你希望他们成为单个事务的一部分,在这种情况下你需要使用CMT(尽管第一个ejb可以启动并共享它BMT交易)。
在某些情况下,BMT的用法需要考虑。
- 如果您将BMT与
MessageDriven
一起使用,则该消息不是事务的一部分,因此消息被容器确认。 - 如果您使用BMT的EJB和方法,则该方法无法加入现有的事务。
0
Bean Managed Transaction应该比Container Managed Tansaction快一点。
CMT需要做一些额外的工作,这不需要在BMT中完成。
- 容器必须检查事务是否已经开始。
- 容器必须读取方法的@TransactionAttribute注释。
- 在运行方法或抛出异常(在TransactionAttributeType的情况下:从不,强制性)之前,容器必须启动一个新的Transaction(在TransactionAttributeType为Required,RequiresNew的情况下)。
相关问题
- 1. EJB事务管理
- 2. 容器管理事务
- 3. 由EJB事务管理器管理的Rabbit AMQPTemplate消息
- 4. 事务管理
- 5. EJB(3.1)容器内的IBATIS 3中的事务管理
- 6. Spring的事务管理器
- 7. HIbernate中的容器管理事务
- 8. 如何在EJB容器内部管理事务?
- 9. MyBatis CDI +容器管理事务
- 10. 多事务管理器
- 11. WebLogic事务管理器
- 12. 访问容器管理的事务中的事务状态
- 13. 回滚与Spring的事务管理器
- 14. 可以弹簧事务管理器能够管理2件事务吗?
- 15. dynamoDB事务管理
- 16. C#事务管理
- 17. 管理业务层事务
- 18. SOA中的事务管理
- 19. 创建bitronix事务管理
- 20. 事务管理不承担
- 21. Spring资源事务管理
- 22. 春@Controller和事务管理
- 23. JDO本地事务管理
- 24. 事务管理器中的GrailsContextLoader错误
- 25. Jboss的AP6事务管理器实现
- 26. Mule:子流的事务管理器
- 27. Hibernate的事务管理器性能问题
- 28. “暂停”由spring事务管理器管理的休眠会话
- 29. Spring事务管理器错误:isOpen()调用后的事务MARKED_FOR_JOINED
- 30. 如果EJB方法忽略其他方法的事务属性,我该如何微观管理EJB事务?