【发布时间】:2012-05-29 19:57:24
【问题描述】:
我正在尝试更改使用 JPA2 和 EJB3 的 Java EE Web 应用程序以支持多租户。
我想在我的应用程序请求开始之前设置当前租户 ID,这样应用程序本身就不必知道它在多租户环境中使用。
我试图不使用供应商特定的功能来允许自己将应用程序部署到本地容器和谷歌 AppEngine。话虽如此,如果我可以从外部使用供应商特定的功能,例如 servlet 过滤器,这将是一个很好的解决方案。
我目前使用 Glassfish 3.1 作为容器,使用 Hibernate 4.0 作为 JPA2 提供程序。
示例代码将不胜感激。
谢谢你, 伊多。
【问题讨论】:
-
“多租户”是什么意思?部署到不同的数据存储?还是将多个租户部署到一个数据存储?显然“多租户”只是(未发布的)JPA2.1 的一个特性
-
@DataNucleus 我认为 Ido 指的是 Hibernate 对多租户的支持,这种支持已经存在了一段时间。 Ido 正确吗?
-
我的意思是部署一个应用程序和一个数据库供多个不相关的客户使用。每个客户都需要看到应用程序和数据库是否是他自己的。
-
好的,谢谢您的澄清。只是你提到了 GAE,还有 Hibernate ......因此有两种不同的 types 数据存储。显然 DataNucleus JPA(GAE JPA 使用的)也提供多租户支持(对于 BigTable 以及所有其他支持的数据存储)
-
是的,是两种不同的数据访问方式。看起来 EclipseLink 和 Hibernate 都实现了多租户支持,但 JPA 标准被抛在了后面。在标准更新之前,我将不得不使用 vedor 特定的解决方案。 J2EE 7 也许...谢谢。
标签: java hibernate jakarta-ee jpa glassfish