[英]Transaction management for multiple database Using Spring & Hibernate
我想出了一個Spring和Hibernate應用程序,它有Inserts / Update到它自己的系統數據庫,它甚至必須插入/更新具有不同數據庫類型的其他系統。
如何在使用不同的數據庫執行Hibernate時實現事務管理。
-Bharat
您可以指定兩個單獨的事務管理器。
<bean id="transactionManager1"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory1" />
<qualifier value="account"/>
</bean>
<bean id="transactionManager2"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory2" />
<qualifier value="businessData"/>
</bean>
設置完成后,您可以使用限定符來指定事務管理器:
public class TransactionalService {
@Transactional("account")
public void setSomethingInAccount() { ... }
@Transactional("businessData")
public void doSomethingInBusinessData() { ... }
}
假設您正在尋找涉及多個數據源的交易,我強烈建議您通過David Syer(春季主管)提供以下系列帖子:
例如,某些數據庫甚至在某些情況下支持跨數據庫模式的事務,而沒有分布式事務(參見此處 )。
除XA兩階段提交事務管理器之外還有其他選項(因為它們引入了顯着的開銷和復雜性),但它們涉及不同的權衡。
這需要由運行應用程序的容器(例如JBoss App Server)完成,或者您需要連接到其他事務管理器(如Bitronix)。 在JavaSE應用程序中開箱即用,您只需“盡力”嘗試管理多個數據源之間的事務。
您需要使用XA驅動程序定義與兩個數據庫的連接,然后確保您的事務管理器正在利用兩階段提交。
如果您不熟悉全局事務,請從此處開始: http : //docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.