1

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

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

我想创建一个应用程序范围的单例 EMF,并在创建方法范围的 EntityManager 时将模式名称传递给 createEntityManager 但注意到模式属性只能传递给createEntityManagerFactory()所以我必须为每个创建一个 EMF session (@SessionScope) 并在每个业务方法中从 EMF 创建 Em。

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

有什么建议吗?

提前致谢

4

1 回答 1

1

我没有这种多租户设置的经验,但是您将从每个人共享的一个唯一 EMF 变为每个用户一个 EMF。

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

于 2012-05-15T08:39:10.580 回答