EclipseLink(JPA)基于表的多租户与JTA,如何?

问题描述 投票:0回答:1

我们的应用程序项目是一个使用JPA和EclipseLink和JTA的OSGI包,需要单表多租户,其中租户ID来自REST请求。从我所阅读和尝试的内容来看,这似乎是不可能的:

  1. 由于租户ID根据请求而变化,因此具有新租户ID的每个请求都需要手动创建具有适当属性的新PersistenceContextEntityManager)。
  2. 但是,根据@PersistenceUnit的说法,使用JTA时不能手动创建持久化上下文(Persistence.createEntityManagerFactory没有注入,http://tomee.apache.org/jpa-concepts.html不起作用)。

我错过了什么吗?或者这根本不可能做到?

jpa eclipselink multi-tenant jta
1个回答
0
投票

您可以在实体管理器中为请求设置多租户/鉴别器属性。但它对于多线程和延迟初始化是不安全的。

我尝试了支持单表多租户的CMobileCom JPA。对于每个租户,应使用新的EntityManager。也就是说,不应共享EntityManager来访问多个租户的数据。 EclipseLink也是如此。

免责声明:我是CMobileCom JPA的开发人员,这是一个针对Java和Android的轻量级JPA实现。

© www.soinside.com 2019 - 2024. All rights reserved.