我们的应用程序允许我们的客户拥有多个数据库,所有数据库都在数据库服务器的一个实例上运行。

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

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

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

最佳答案

正如我在发布这个问题后发现的那样,正如用户建议的那样,Hibernate 的 Multi-Tenancy 支持(使用数据库 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"

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

关于java - 如何将 Hibernate 与单个服务器上的多个数据库一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36270121/

10-13 05:47
查看更多