JPA:是否可以在运行时指定JPA提供程序?

时间:2012-06-26 22:50:27

标签: java java-ee jpa

我们需要在运行时根据系统属性选择JPA提供程序(Hibernate或EclipseLink)。

根据我的理解,必须在persistence.xml中提供提供程序名称,并且不能在代码中重写。如果未提供提供程序名称,则默认情况下将使用类路径中的第一个提供程序。另一种替代方法可能是使用2个不同的persistence.xml,并根据系统属性的值加载其中一个。但是,这似乎也不可能(JPA using alternative "persistence.xml")。

还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

事实证明,通过在persistence.xml中定义多个具有不同提供者名称的持久性单元,可以轻松实现此目的。

然后在运行时,在创建EntityManagerFactory时传递正确的持久性单元名称。

答案 1 :(得分:0)

另一种方法是直接访问持久性提供程序,而不是通过持久性。