应用程序管理的每个会话的EntityManagerFactory

时间:2012-05-15 08:26:29

标签: java-ee ejb-3.0 jpa-2.0 eclipselink

我必须在多租户 SaaS 应用程序中更改运行时的默认架构。 (共享Db - 单独模式)。基本上每个客户都会拥有自己的架构(由于某些保密原因而采用这种方式设计),并且基于他们的登录凭据,他们将在登录后连接到特定架构。

我使用JPA2.0和eclipselink作为持久性提供程序。

我想创建一个 Singleton EMF ,它是应用程序范围的,当我创建方法范围的EntityManagers但是已经注意到schema属性可以传递给 createEntityManagerFactory()所以我必须为每个会话创建一个EMF(@SessionScope)并在每个业务方法中从EMF创建Em。

设计对我描述的场景有意义吗?

任何建议?

提前致谢

1 个答案:

答案 0 :(得分:1)

我没有这种多租户设置的经验,但您将从每个人共享的一个独特的EMF转到每个用户的一个EMF。

你走得太远了。正确的粒度IMO应该是每个数据库模式一个EMF。使用相同模式的两个用户(以及两个HTTP会话)没有理由拥有两个不同的EMF。