我想在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的支持?
答案 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的解释,并提供了引用由容器管理的数据源的示例。
这对您的情况有用吗?