java jpa jndi,java – 如何在JPA中使用动态JNDI数据源?

我们有一个应用程序,它使用多个数据库来存储不同国家/地区的相同数据.

例如,Subscription对象可能与德国或西班牙相关联.如果是德语订阅,则需要将其存储在与西班牙语订阅不同的数据库中.数据库在结构上是相同的,但它们具有不同的内容.

我们在jboss 5上运行,并且每个文件都有一个不同的数据源配置(* ds.xml)文件,在启动时动态生成.它们存储在JNDI中 – 所以我们有DataSourceDE,DataSourceES等.

以下是它应该如何工作:如果请求进入’为德国提取订阅17’那么我计算数据源应该是DataSourceDE并使用JPA / hibernate从正确的数据库中获取该对象.西班牙语数据库中也会有一个订阅17,在这个例子中我不想要.

我可以自动生成persistence.xml以为数据源创建额外的持久性单元,但是Subscription类使用以下注释进行注释:

@PersistenceContext(unitName="core")

这不起作用 – 如何动态地在java对象上设置持久化上下文?

解决方法:

您想要实现的目标称为多租户.这是一个非常适合您的问题的教程,使其工作.

主要思想是使用一个Stateless会话bean,它引用了两个持久性单元.根据必须完成的操作,此bean执行查找以调用相应的EntityManager.此外:

标签:java,jpa,hibernate

来源: https://codeday.me/bug/20190528/1170528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值