我正在开发一个部署在 JBoss 应用程序服务器上的 J2EE 应用程序。
该应用程序由 EJB 2.x 组件和 Web 组件组成,运行在本地计算机或远程服务器上。数据库是 Oracle 或 SQL Server,并且不处于分布式环境中。
我使用 Hibernate 3.6(JPA 2.0 实现)进行事务。我应该使用JTA(容器管理事务)还是使用它太过分了?
目前我正在使用JTA,事实证明它运行良好,但有一些小问题,我不知道它是否与事务管理有关。使用本地事务管理会更容易或更可靠吗?
JTA 事务始终优先于其他类型的事务 API 进行推荐,特别是当您引用仍属于 JPA API 一部分的本机事务时。请注意,您不能说“JTA 与资源本地事务”,因为 JTA 实际上管理资源本地事务等。
Gavin King(Hibernate 的创建者)曾在一次采访中表示,这个特定于 JPA 的 API 是一个错误,应该首选更灵活的 JTA API。特别是在使用声明式事务时,JTA 非常轻量级。这个单词overkill
实际上更多地适用于使用 JPA 本机事务 API,然后适用于使用 JTA。
关于使用 XA 或资源本地事务与 JTA 之间的选择,有一些话要说。有关更多详细信息,请参阅我的回答:JPA2+Hibernate 3.6.0 中的 JTA 还是 LOCAL 事务? https://stackoverflow.com/questions/4559764/jta-or-local-transactions-in-jpa2hibernate-3-6-0/4578327#4578327
我确实想知道为什么您将 EJB 2 与 JPA 2.0 结合使用。 EJB 3.1 在这里将是一个更合理的选择。 EJB 2 已完全弃用(将在 Java EE 7 中删除)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)