从Persistence API使用EntityManagerFactory

时间:2019-06-21 17:55:25

标签: java jpa java-ee persistence

我想在jee环境中从Persistence接口获取EntityManagerFactory实例..但是规范链接:https://docs.oracle.com/javaee/7/api/javax/persistence/Persistence.html

陈述以下内容

Persistence类在Java EE容器环境中也可用;但是,在容器环境中不需要支持Java SE引导API。

这是否意味着我们不应该在Java EE环境中不使用Persistence.createEntityManagerFactory?

注意:我已经在WAS 8.5.5和JBOSS EAP 7上进行了测试,并且能够成功获取EntityManagerFactory并执行数据库持久性。我想知道容器是否按照规范会停止对此API的支持?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的评论,那么您的问题是数据源在某种程度上是动态的,因此您想使用引导API创建EntityManagerFactory,而不是通过persistence.xml以“ EE方式”配置它。 / p>

您的数据源到底有多动态?您正在运行哪个EE容器?您也许可以在容器配置中(即在服务器上)配置数据源,并由容器创建实体管理工厂,或者通过JNDI自动选择数据源。

在一位前雇主中,我们运行Wildfly,然后在每台服务器上以wildfly配置配置数据源,让wildfly在标准位置提供数据源,以便休眠模式来获取和构造EMF。

有关类似设置的示例,请参见https://stackoverflow.com/a/41550908/691074

这使我们能够在连接到不同数据库(即测试,生产等)的不同服务器上运行相同的代码

默认的wildfly配置已经配置了内存中的H2数据库,您可以对其进行修改以指向正确的方向。

Here是有关数据源配置的Wildfly 10文档,而here是对persistence.xml的解释,并提供了引用由容器管理的数据源的示例。

这对您的情况有用吗?