我正在四處尋找我的Web應用程序的多租戶解決方案。 我想用獨立的架構模型來實現應用程序。我想每個會話都有一個數據源。爲了做到這一點,我把數據源和entitymanger放在會話範圍內,但那不起作用。我想在用戶輸入用戶名和密碼以及tenantId時加載data-access-context.xml文件(包括數據源和其他存儲庫bean)文件。我想知道這是否是一個好的解決方案?多彈簧與彈簧JPA
3
A
回答
2
多租戶是一個棘手的主題,它必須在JPA提供商一方處理,以便從客戶端代碼的角度來看沒有或幾乎沒有變化。 eclipselink支持多租戶(請參閱:EclipseLink/Development/Indigo/Multi-Tenancy),hibernate剛剛添加它。
另一種方法是使用AbstractRoutingDataSource
,參見:Multi tenancy in Hibernate。
使用會話範圍風險太大(同時你最終會得到數千個數據庫連接,每個會話/用戶都會得到很少的連接,最後EntityManager
和底層數據庫連接是不可序列化的,所以你不能遷移你的會話並擴展你的應用程序正常。
0
我曾與一些多租戶系統的工作。這裏的挑戰是如何保持
- 開放式架構和
- 提供與您的業務發展的解決方案。
讓我們先看看第二個挑戰。多租戶系統有發展的趨勢,您需要支持多個擁有不同容量的租戶可訪問同一數據(記錄)的用例(例如https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458)。所以,系統最終需要訪問控制列表。
爲了保持開放式體系結構,您可以編碼爲標準(如JPA)。編碼到EclipseLink或Hibernate讓我感到不舒服。
Spring Security ACL爲這些挑戰提供了非常靈活的社區支持解決方案。試試看。我對它的表現感到滿意。但是,我必須告誡你,我花了一些時間來探索它。
相關問題
- 1. Angular2與彈簧靴和彈簧安全
- 2. 與彈簧
- 3. Jhipster或彈簧數據JPA
- 4. 彈簧+ JPA + DAO + Tomcat的
- 5. 要通過彈簧JPA
- 6. 事務彈簧DATA JPA
- 7. 彈簧數據JPA獲取
- 8. 彈簧引導數據redis集成彈簧數據jpa
- 9. 彈簧4 +彈簧數據的JPA +休眠+ PostgreSQL的
- 10. 混合彈簧數據jpa +彈簧數據neo4j。 users服務
- 11. NonUniqueResultException在投影彈簧數據JPA(彈簧引導)
- 12. Spring Boot多項目彈簧數據Jpa
- 13. 彈簧數據jpa與組之和
- 14. 分頁與彈簧啓動usiing jpa
- 15. 使用彈簧數據JPA與Spring 3.1.0
- 16. 彈簧prefixjson與responsebody
- 17. 休眠與彈簧
- 18. 在彈簧安全與彈簧websocket集成彈簧安全性和
- 19. IndexOutOfBoundsException彈簧批量和彈簧啓動
- 20. 彈簧啓動彈簧安全
- 21. 彈簧啓動應用與彈簧批量不運行作業
- 22. 集成彈簧Websession與彈簧反應性網絡通量
- 23. 與彈簧集成啓動競賽條件彈簧批次
- 24. 彈簧雲與彈簧雲:gradle構建失敗
- 25. 彈簧配置
- 26. 彈簧安全
- 27. WatchService彈簧
- 28. 彈簧AMQP comsumer
- 29. 使用彈簧
- 30. 彈簧JDBC DAO
當您使用SessionFactory(即Hibernate native)而不是JPA(@ PersistenceContext/EntityManager)時,Hibernate僅支持多租戶。 – pap 2012-03-15 11:07:30
嗨,謝謝你的回答。這真的很有幫助。而你說得對。它不支持JPA。但我選擇使用'AbstractRoutingDataSource'。但問題是現在數據源和實體管理器bean在啓動時初始化。有沒有辦法在春季配置這種方式,它將在用戶認證後初始化? – mettok 2012-03-15 12:59:39
@ user1057347:請打開一個新問題,這太複雜了,不能在評論中解釋(並且在將來不會有足夠的支持)。還請發佈一個新問題的鏈接,以便我可以跟進。 – 2012-03-15 13:02:39