我必须在多租户 SaaS 应用程序中更改运行时的默认架构。 (共享Db - 单独模式)。基本上每个客户都会拥有自己的架构(由于某些保密原因而采用这种方式设计),并且基于他们的登录凭据,他们将在登录后连接到特定架构。
我使用JPA2.0和eclipselink作为持久性提供程序。
我想创建一个 Singleton EMF ,它是应用程序范围的,当我创建方法范围的EntityManagers但是已经注意到schema属性可以传递给 createEntityManagerFactory()所以我必须为每个会话创建一个EMF(@SessionScope)并在每个业务方法中从EMF创建Em。
设计对我描述的场景有意义吗?
任何建议?
提前致谢
答案 0 :(得分:1)
我没有这种多租户设置的经验,但您将从每个人共享的一个独特的EMF转到每个用户的一个EMF。
你走得太远了。正确的粒度IMO应该是每个数据库模式一个EMF。使用相同模式的两个用户(以及两个HTTP会话)没有理由拥有两个不同的EMF。