應用程序有2個獨立的數據庫,說:多租戶在Hibernate中
- DB1
- DB2
和不同公司的數據庫都在這些分裂2數據庫,如:
- DB1
- 公司1
- 公司2
- 公司3
- 公司4
- DB2
- 公司5
- 公司6
- 公司7
- 公司8
試問,這樣的情景在Hibernate配置?所有示例都提到了基於架構的多租戶或數據庫多租戶。
有什麼辦法可以配置這樣的場景嗎?
應用程序有2個獨立的數據庫,說:多租戶在Hibernate中
和不同公司的數據庫都在這些分裂2數據庫,如:
試問,這樣的情景在Hibernate配置?所有示例都提到了基於架構的多租戶或數據庫多租戶。
有什麼辦法可以配置這樣的場景嗎?
要做到這一點,你應該在你的配置文件中創建兩個sessionFactory Bean。並在您的DAO圖層中使用限定符註釋調用它。
您將不得不創建自己的實現MultiTenantConnectionProvider
來處理數據庫和模式級別的多租戶。這應該是阻力最小的路徑。
下面是關於帶彈簧的戰鬥有些略顯陳舊的信息,休眠和自定義的多租戶:Setting up a MultiTenantConnectionProvider using Hibernate 4.2 and Spring 3.1.1
那豈不是更容易只是去數據庫多租戶?基於模式的多租戶適用於較小的數據集,但將兩者結合起來並不值得。相反,你會有'Server1'和'Server2'(假設你有多個數據庫服務器),每個公司有4個數據庫。 – Kayaman
@Kayaman數據庫結構已經定義,這是一個現有的應用程序。我無法改變這一點。 –
配置兩個'DataSource's,一個用於DB1,另一個用於DB2。創建['AbstractRoutingDataSource']的兩個實現(https://spring.io/blog/2007/01/23/dynamic-datasource-routing/) - 允許爲當前客戶端選擇DB1的數據源;另一個允許選擇DB2的數據源。最後,創建'AbstractRoutingDataSource'的第三個實現,該實現允許爲當前客戶端選擇其他兩個'AbstractRoutingDataSource'實現中的一個。鏈接的博客具有所有必需的信息。 – manish