【问题标题】:understanding JTA Spring and Bitronix了解 JTA Spring 和 Bitronix
【发布时间】:2011-03-01 11:00:45
【问题描述】:

我想了解 JTA、Spring 和 Bitronix 之间的区别是什么?

Hibernate 持久化中的事务应该使用什么?

【问题讨论】:

    标签: java hibernate spring jta


    【解决方案1】:
    • JTA 是一种用于分布式事务管理的 API。它可以作为应用服务器的一部分来实现,也可以作为独立的事务管理器来实现。

    • Bitronix 事务管理器是 JTA 的独立实现。

    • Spring 是一个为事务管理提供(以及其他特性)统一接口的框架。特别是 Spring 管理的事务可以使用 JTA 实现作为后端。

    换句话说,在典型的 Spring 和 Hibernate 应用程序中,您使用 Spring 事务支持来管理事务,并且 Spring 被配置为使用后端事务管理器之一:

    • 如果您不需要分布式事务,请使用 Hibernate 自己的事务支持 (HibernateTransactionManager)
    • 如果您需要分布式事务,请使用 JTA 事务 (JtaTransactionManager)。尤其是:
      • 在成熟的应用服务器上JtaTransactionManager 使用内置的 JTA 实现
      • 在独立环境(如 Tomcat 等)中,您需要配置独立的 JTA 实现,如 Bitronix。

    【讨论】:

    • 分布式事务和非分布式事务有什么区别?以及您所说的完整应用程序是什么意思?
    • @Odelya:分布式事务分布在多个事务资源(例如数据库和消息队列)上。如果您只有一个数据库,则不需要它们。我所说的成熟应用服务器是指 JBoss、WebSphere 和 WebLogic 等产品,与 Tomcat 和 Jetty 等 servlet 容器不同。
    • 我可以在同一个应用程序上下文中使用 HibernateTransactionManager 和 JtaTransactionManager 吗?
    • @Odelya:如果你真的需要,你可以:static.springsource.org/spring/docs/3.0.x/…。请注意,这并不意味着他们可以参与同一个交易。
    • 我使用了 2 种机制:使用 hibernate 配置访问 Hibernate,并通过持久性访问它。 (这是因为我正在使用 JBPM5 - jboss 工作流,其中需要持久性文件并且在我的应用程序中我不喜欢这种方式,所以我使用的是休眠配置。)所以在 jbpm5 - 我需要使用 JTA 的持久性,他们推荐BTM。在我的应用程序(与 jbpm5 集成)中,我不需要 JTA 并使用 spring 事务
    【解决方案2】:
    • JTA 是一个 java 事务 api。通过使用 JTA,我们可以执行全局事务。
    • Bitronix 是一款有助于实现 JTA 的软件。它还有助于以序列化的方式将数据存储到数据库中。

    例如,当执行任何交易操作时,在同一时刻,应从一个帐户中扣除金额并添加到另一个帐户中。但是有时如果第二个操作失败,那么它不会回滚事务。它还有助于避免死锁情况。

    【讨论】:

      猜你喜欢
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2014-12-24
      • 2011-06-28
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      相关资源
      最近更新 更多