我需要爲不同的客戶提供多個數據庫。我如何使用Hibernate處理多個數據庫?有沒有什麼好的例子如何做到這一點?使用多個數據庫休眠
我可以創建配置對象,然後構建SessionFactory,但這會始終創建一個新的會話工廠,這不會是非常明智的。
編輯:
現在,我可以得到Hibernate的配置對象用戶登錄的時候,但我怎樣才能創建/獲取與該對象的會話工廠,以便將只有因爲如果一個數據庫(當然一個會話工廠多個數據庫同時使用,那麼可以有多個會話工廠)?
我需要爲不同的客戶提供多個數據庫。我如何使用Hibernate處理多個數據庫?有沒有什麼好的例子如何做到這一點?使用多個數據庫休眠
我可以創建配置對象,然後構建SessionFactory,但這會始終創建一個新的會話工廠,這不會是非常明智的。
編輯:
現在,我可以得到Hibernate的配置對象用戶登錄的時候,但我怎樣才能創建/獲取與該對象的會話工廠,以便將只有因爲如果一個數據庫(當然一個會話工廠多個數據庫同時使用,那麼可以有多個會話工廠)?
我需要爲不同的客戶提供多個數據庫。我如何使用Hibernate處理多個數據庫?有沒有什麼好的例子如何做到這一點?
確實會創建多個SessionFactory
(每個數據庫一個)。
現在,我可以得到Hibernate的配置對象,當用戶登錄,但我怎樣才能創建/獲取與該對象的會話工廠,這樣如果使用多個數據庫將只有一個一個數據庫(當然會話工廠同時,那麼可以有多個會話工廠)?
使用一些獨特的Map<SomeKey, SessionFactory>
。如果SessionFactory
尚未創建,請構建它並將其存儲在地圖中。
休眠SessionFactory
一次只能處理一個DataSource
,一般而言,每個DataSource
指的是一個且只有一個數據庫。所以如果你需要多個數據庫,那麼最簡單的解決方案几乎肯定是多個SessionFactory
實例。
我不知道爲什麼你認爲這不會是明智的,但是,這似乎對我來說足夠公平。
某些RDBMS允許有限的跨數據庫引用,這可能允許您使用Hibernate和一個DataSource
做某些事情,但是您沒有告訴我們有關您的數據庫設置的任何信息。
我有同樣的問題。我這樣解決:
首先,不同的數據庫應該有不同的cfg.xml文件。然後,只要您想連接到第二個數據庫,只需使用Hibernate的Configuration對象。
Configuration config = new Configuration().configure("<complete path to your cfg.xml file>");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
我發現這個在這裏:http://www.coderanch.com/t/468821/ORM/java/If-hibernate-cfg-xml-has
我敢肯定,這可以擴展到2級以上的數據庫。 希望這有助於。
Thanx爲這個答案,但因爲所有數據庫是相同的,我設法只使用一個SessionFactory。現在我創建Connection對象並使用方法sessionFactory.openSession(connection);獲得休眠會話。現在我可以動態連接到任何我想要的數據庫。 – newbie 2010-10-25 13:13:22
@newbie:我不是故意粗魯,但在提問時應該嘗試給出相關細節,讀者不介意讀者。 – 2010-10-25 13:25:14
對不起,我下次嘗試更具體一點 – newbie 2010-10-25 14:10:34