代码之家  ›  专栏  ›  技术社区  ›  18bytes

Spring全局事务与本地事务

  •  15
  • 18bytes  · 技术社区  · 11 年前

    在阅读Spring事务文档时,我发现它同时支持全局事务和本地事务。

    • 简单来说,什么是全局事务,什么是本地事务?
    • 两者的优点是什么?它们的适当用途是什么?

    如果我使用以下配置,是否意味着它是本地事务?

    <tx:annotation-driven transaction-manager="transManager" />
    
    <bean id="transManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf" />
    </bean>
    

    我尝试在Google和Stackoverflow中搜索,但没有得到任何简单的解释。

    1 回复  |  直到 9 年前
        1
  •  20
  •   Serhiy    6 年前

    例如,实际上有很多资源可以回答前两个问题 Spring Documentation 解释什么是本地和全球交易,并在第章中描述它们的区别 9.2动机 。简而言之:

    全局事务是应用程序服务器管理的事务,允许使用不同的事务资源(这可能是两个不同的数据库、数据库和消息队列等)

    本地事务是特定于资源的事务(例如 Oracle Transactions )应用服务器与它们无关。 (同一章很好地解释了其中每一个的优点和缺点,比我所能解释的要好得多,所以我建议你仔细看看)

    回答您稍后的问题。这个 documentation 说的是 JpaTransactionManager 能够处理全局事务,因此通过查看呈现的代码,很难说它是本地事务还是全局事务。同一文档指出本地单一资源事务 DataSourceTransactionManager 应改用。