2016-04-22 168 views
2

我想出了一個Spring & Hibernate應用程序,它在其自己的系統數據庫中插入/更新,它甚至需要插入/更新具有不同數據庫類型的其他系統。多個數據庫的事務管理使用Spring&Hibernate

如何在使用不同的數據庫執行Hibernate時實現事務管理。

-Bharat

回答

0

這將需要由容器在您的應用程序運行(例如JBoss的應用服務器),或者你需要掛接到一些其他的事務管理器,如Bitronix來完成。在JavaSE應用程序中開箱即用,您只會嘗試管理多個數據源之間的事務。

您需要使用XA驅動程序定義到兩個數據庫的連接,然後確保您的事務管理器正在利用兩階段提交。

如果你不熟悉的全球交易,從這裏開始:http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global

+0

注意:如果您沒有同時涉及兩個數據庫的事務,Dinesh的回答就足夠了 –

+0

感謝您的回覆,對於我的要求,我不想與任何服務器一起使用,我想製作獨立應用程序。 – Bharat

1

您可以指定兩個獨立TXN經理。

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

一旦設立完成後,你可以使用qualigier指定TXN經理:

​​
1

假設你正在尋找涉及多個數據源的交易,我強烈建議你把這個系列文章的由David Syer(春季鉛)對您的選擇:

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

例如,有些數據庫甚至支持跨DAT交易在沒有分佈式事務的情況下在特定情況下降低模式(請參閱here)。

除了XA兩階段提交事務管理器之外,還有其他選擇(因爲它們引入了大量開銷和複雜性),但它們涉及不同的權衡。

相關問題