使用替代“持久性.xml”的 JPA
我知道通过指示:
Persistence.createEntityManagerFactory("persistence-unit-name");
JPA 持久性机制读取“持久性.xml”文件,查找名为“持久性单元名称”的持久性单元,并基于它构造 EntityManagerFactory。
我的问题是,如何强制JPA获取与“持久性.xml”不同的文件?例如,“持久性测试.xml”。
我知道通过指示:
Persistence.createEntityManagerFactory("persistence-unit-name");
JPA 持久性机制读取“持久性.xml”文件,查找名为“持久性单元名称”的持久性单元,并基于它构造 EntityManagerFactory。
我的问题是,如何强制JPA获取与“持久性.xml”不同的文件?例如,“持久性测试.xml”。
没有标准化的 JPA 方法来执行此操作,尽管各个 JPA 提供程序可能会提供一种方法。我建议使用标准方法,为 main 和 test 使用不同的类路径。
例如,如果您使用 Maven,并且您有两个文件,一个在 中,一个在 中,测试将选取 中一个,因为 Maven 将测试类/资源放在类路径中主类/资源之前。您可以轻松地将 Ant 配置为以类似的方式工作。META-INF/persistence.xml
src/main/resources
src/test/resources
src/test/resources
如果您需要更高级的逻辑,请考虑使用Spring的JPA支持。它将允许您处理高级情况,例如集成多个持久性.xml文件。
在 EclipseLink 中,您可以执行以下操作:
Properties pros = new Properties();
pros.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML,
"META-INF/persistence-alternative.xml");
EntityManagerFactory factory =
Persistence.createEntityManagerFactory("pu-name", pros);