如何在单个服务器上使用Hibernate与多个数据库

我们的应用程序允许我们的客户拥有多个数据库,所有数据库都在一个数据库服

例如,数据库可能是dbcommon,dbLive,dbStaging,dbUAT,dbDev,dbSandbox.公共数据库和生产数据库始终存在,但其他数据库是可选的(并且没有限制).在dbcommon中有一个表告诉我们所有的数据库….所以这就是我需要启动的地方.共同的表与其他表不同,其他表都具有相同的模式(订户数据)

使用Hibernate,我如何动态创建/使用Live或Staging(或任何其他)的连接?如果有帮助我正在使用Spring.

我遇到了建议在配置中创建不同连接的答案,但由于订阅者数据库的数量可能不同(每次安装,而不是在应用程序运行时),这对我来说不是一个选项.

最佳答案 正如我在发布此问题后发现的那样,并且正如用户manish所建议的那样,Hibernate的Multi Tenancy支持(使用
Database MultiTenancyStrategy)对我有用.我不得不使用各种资源(下面列出)拼凑出一个解决方案.

http://www.ticnfae.co.uk/blog/2014/07/16/hibernate-multi-tenancy-with-spring/

Setting up a MultiTenantConnectionProvider using Hibernate 4.2 and Spring 3.1.1

Multi-Tenancy with Spring + Hibernate: “SessionFactory configured for multi-tenancy, but no tenant identifier specified”

我仍然在寻找一种能够在租户数据库的同时引用公共(共享)数据库的方法……并且在完成时会尝试将其添加到此答案中.

点赞