我们有一个中央帐户数据库。它包含登录信息,以及一个称为数据库概要文件的字段。数据库配置文件指示该帐户应使用哪种数据库连接。例如,我们将拥有Profile1,Profile2,Profile3 ... ProfileN

如果指示用户拥有Profile1,则他们将使用与指示为Profile2一部分的用户不同的数据库。

我对JPA的理解是,即使数据库都具有相同的架构,只是连接信息不同,每个Profile(持久性单元)仍需要一个新的EntityManagerFactory。因此,如果最终有100个配置文件,我们将有100个实体管理工厂,这似乎并不理想。

我已经研究了EntityManagerFactory,它似乎并没有让您更改数据库连接选项。

我是拥有N个EntityManagerFactory的唯一选择,如果这样的话,是否会对它造成任何重大后果(例如性能下降)?

感谢您的任何建议。

最佳答案

您正在谈论的事情超出了JPA抽象的范围。诸如特定连接管理之类的事情通常更特定于提供商。例如,使用Hibernate SessionFactory,您当然可以create new sessions from an aribtraty JDBC connection。可能需要考虑诸如ID生成方案之类的陷阱(您可能必须使用在DB中生成的序列),并且基本上已经对L2缓存抱有很大的希望,但是通过仔细编程,它可以正常工作。

10-08 17:14