数据库
首页 > 数据库> > Spring Hibernate JPA多个数据库

Spring Hibernate JPA多个数据库

作者:互联网

我有一个Spring Hibernate JPA应用程序.登录时,用户可以从要连接的DB列表中进行选择(这些是要求).所有数据库都具有相同的模式,因此将使用相同的实体和DAO.

现在我有一个EntityManager(目前正在使用一个数据库),它注入DAO,如下所示:

@PersistenceContext
private EntityManager entityManager;

有没有办法让DAO根据从服务层接收的参数/属性自动接收entityManager(由Spring管理)? (Web层发送一种上下文,所选数据库的名称/代码/ id将在那里).

或者我必须自己管理(创建所有的entityManagers,将它们放在一张地图中,告诉DAO每个调用使用哪一个)?

我在问这个问题之前做了一些研究,但结果没有结果 – 大多数问题涉及的模型分布在2个或更多DB以及跨越多个DB的事务中,但对我来说情况并非如此.

在我的情况下,一旦用户连接,就好像他连接到只有一个实体管理器的应用程序,即他选择的数据库. DB的中期或其他任何此类内容之间没有切换.

谢谢.

解决方法:

此功能称为多租户.

Hibernate 4应该支持它开箱即用,但我不确定它是否可以与Spring管理的EntityManager集成.

或者,最简单的方法是在ConnectionProvider级别或DataSource级别拦截数据库连接的创建,并根据存储在ThreadLocal变量中的租户标识符选择适当的数据库.

也可以看看:

> Multi-tenancy Design
> Multi-tenancy in Hibernate

标签:spring,jpa,hibernate,entitymanager,multiple-databases
来源: https://codeday.me/bug/20190729/1575286.html