2012-09-04 32 views
-1

我的應用程序是一個連接到mysql數據庫(database name = mydb)的spring 2.5 Hibernate應用程序。該應用程序託管在Tomcat 6上 - 運行在Java 6上。我有一個用例,管理員可以編輯用戶的配置文件。我打算將這些編輯的歷史記錄存儲在一個單獨的數據庫中(在同一個mysql服務器上 - 數據庫namne = archivedb)。在這種情況下,編輯用戶功能跨越同一個mysql數據庫中的兩個數據庫。我需要使用JTA交易嗎? IF JTA,哪個實現是最好的。我更喜歡開源的。spring 2.5 hibernate mysql - 兩個數據庫事務

Santhosh

回答

0

有關於這個SpringSource的一個相當不錯的article。但是請注意,它是用於Spring 3.0的(因爲該示例使用基於java的配置),但很可能將其轉換爲Spring 2.5的基於註釋/ xml的設置。

這裏的關鍵是您使用Spring的JtaTransactionManager委託給嵌入式XA事務管理器。本文使用Atomikos,這是一個開源嵌入式XA事務管理器(請參閱「使用嵌入式事務管理器」一節)。如你所見,這並不複雜,Spring爲你抽象了許多。但是,它對您的解決方案做了一些相當複雜的處理,因此我會對您的體系結構進行一次迭代,並評估分佈式(XA)事務支持的優點是否值得引入額外的複雜性。也許你並不需要完全的XA /兩階段提交事務來處理這一個用例呢?

+0

Pap, 感謝您的快速回答..我與你同齡人,我們需要這種功能的複雜性。 「所以我會再做一次你的架構迭代並評估」 - 你有更好的選擇嗎? – santhosh

+0

@santhosh評估寫入歷史是否足夠關鍵,以至於必須在同一事務中發生,或者在成功提交第一個編輯之後,是否可以在自己的事務範圍內寫入歷史記錄。也許數據不一致的小風險是降低複雜性的可接受折衷。或者,將歷史數據存儲在同一個數據庫中。這樣你完全擺脫了這個問題。爲了複雜性,您不需要創建複雜性。 – pap

相關問題