這個想法是構建一個多線程應用程序,每個線程連接到相應的數據庫(單獨的端口號)。每個線程都會有一個進程(假設有A,B,C和D),並且每個進程可以有多個線程實例(例如2xA,1xB,0xC和3xD)同時運行。多線程應用程序中的Hibernate + Spring
我主要的兩個問題是:
運行時如何替換
SessionFactory's
url屬性數據庫端口?如何限制Hibernate的
Session
訪問其他線程的Configuration
?
廣告1.我發現這個解決方案,這是整齊: https://spring.io/blog/2007/01/23/dynamic-datasource-routing/。但是,如果應用程序是單線程的,這隻能正常工作。否則,進程A和B在嘗試同時訪問數據庫時可能會遇到衝突。
廣告2.不太確定如何解決這個問題。 Spring是否足夠聰明地弄清楚哪個Configuration
(最終是哪個數據庫url)對象要獲取以便與正確的Thread
一起使用?
*但是,如果應用程序是單線程*沒有這只是正常工作。爲什麼呢?閱讀文章:它從**線程綁定**上下文獲取數據源查找鍵。所以每個線程都有自己的查找鍵。 –
您需要在xml或註釋中爲不同的數據庫創建不同的sessionFacotry條目; – Musaddique
@JB Nizet所以你說的是Spring將'SessionFactory'連接到'Thread'沒有問題,對吧?或者,我是否還應該按照它的線程來標識bean? – JDelorean