JPA是适用于此方案的ORM吗?

时间:2010-11-27 21:31:40

标签: java orm jpa jpa-2.0

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

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

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

我查看了EntityManagerFactory,它似乎不允许您更改数据库连接选项。

我唯一的选择是拥有N EntityManagerFactory,如果是这样,它们会对此产生任何重大影响(例如性能不佳)吗?

感谢您的任何建议。

3 个答案:

答案 0 :(得分:3)

你所谈论的事情正在超出JPA抽象的范围。特定连接管理之类的东西通常更具体。例如,使用Hibernate SessionFactory,您当然可以create new sessions from an aribtraty JDBC connection。会有一些陷阱需要考虑,例如ID生成方案(你可能不得不使用在DB中生成的序列),并且你基本上已经用于L2缓存,但仔细编程就可以使它工作。

答案 1 :(得分:2)

只需使用javax.persistence.Persistence#createEntityMananagerFactory(String,Map),并在Map中提供连接参数。缓存EMF,明智地使用连接,不要混合来自不同EMF的n匹配对象。

答案 2 :(得分:2)

如果您使用的是spring,那么我知道有一种方法可以动态切换DataSource。查找更多信息here