簡體   English   中英

多個數據庫的事務管理使用Spring和Hibernate

[英]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(春季主管)提供以下系列帖子:

http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html

例如,某些數據庫甚至在某些情況下支持跨數據庫模式的事務,而沒有分布式事務(參見此處 )。

除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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM