春季全球交易与本地交易

在阅读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

实际上,有很多资源可以回答您的前两个问题,例如Spring文档解释了什么是本地和全局事务,并在第9.2章中描述了它们的差异 动机。简而言之:

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

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

回答您后面的问题。文档说它能够处理全局事务,因此通过查看呈现的代码段,很难说它是本地事务还是全局事务。同一文档说,应该改用本地单一资源事务。JpaTransactionManagerDataSourceTransactionManager


答案 2

推荐