Spring Global事务与本地事务

时间:2014-03-06 10:31:05

标签: java spring transactions spring-transactions distributed-transactions

在阅读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 个答案:

答案 0 :(得分:16)

实际上有很多资源可以回答你的前两个问题,例如Spring Documentation解释了本地和全球交易是什么,并描述了他们在 9.2 Motivation 章节中的差异。简而言之:

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

本地事务是特定于资源的事务(例如Oracle Transactions),而应用程序服务器与它们无关。 (同一章解释了他们每个人的优点和缺点,然后我可以解释得更好,所以我建议你仔细看看)

回答你以后的问题。 documentation表示JpaTransactionManager能够处理全局事务,因此通过查看显示的代码片段,很难说它是本地事务还是全局事务。相同的文档说明应该使用本地单一资源事务DataSourceTransactionManager