我想出了一個Spring & Hibernate應用程序,它在其自己的系統數據庫中插入/更新,它甚至需要插入/更新具有不同數據庫類型的其他系統。多個數據庫的事務管理使用Spring&Hibernate
如何在使用不同的數據庫執行Hibernate時實現事務管理。
-Bharat
我想出了一個Spring & Hibernate應用程序,它在其自己的系統數據庫中插入/更新,它甚至需要插入/更新具有不同數據庫類型的其他系統。多個數據庫的事務管理使用Spring&Hibernate
如何在使用不同的數據庫執行Hibernate時實現事務管理。
-Bharat
這將需要由容器在您的應用程序運行(例如JBoss的應用服務器),或者你需要掛接到一些其他的事務管理器,如Bitronix來完成。在JavaSE應用程序中開箱即用,您只會嘗試管理多個數據源之間的事務。
您需要使用XA驅動程序定義到兩個數據庫的連接,然後確保您的事務管理器正在利用兩階段提交。
如果你不熟悉的全球交易,從這裏開始:http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global
您可以指定兩個獨立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經理:
假設你正在尋找涉及多個數據源的交易,我強烈建議你把這個系列文章的由David Syer(春季鉛)對您的選擇:
例如,有些數據庫甚至支持跨DAT交易在沒有分佈式事務的情況下在特定情況下降低模式(請參閱here)。
除了XA兩階段提交事務管理器之外,還有其他選擇(因爲它們引入了大量開銷和複雜性),但它們涉及不同的權衡。
注意:如果您沒有同時涉及兩個數據庫的事務,Dinesh的回答就足夠了 –
感謝您的回覆,對於我的要求,我不想與任何服務器一起使用,我想製作獨立應用程序。 – Bharat