JPA使用替代"persistence.xml"

Mr.*_*art 21 java hibernate ejb jpa

我知道这有说明:

Persistence.createEntityManagerFactory("persistence-unit-name");
Run Code Online (Sandbox Code Playgroud)

JPA持久性机制读取"persistence.xml"文件,查找名为"persistence-unit-name"的持久性单元,并基于它构造EntityManagerFactory.

我的问题是,如何强制JPA 采用与"persistence.xml"不同的文件?例如,"persistence-test.xml".

Sea*_*oyd 18

虽然单个JPA提供者可能提供一种方法,但没有标准化的JPA方法来实现这一点.我建议使用标准方法为main和test设置不同的类路径.

例如,如果您使用Maven,并且您有两个META-INF/persistence.xml文件,一个输入src/main/resources和一个输入src/test/resources,则测试将选择一个src/test/resources,因为Maven将测试类/资源放在类路径中的主类/资源之前.您可以轻松地将Ant配置为以类似方式工作.

如果您需要更高级的逻辑,请考虑使用Spring的JPA支持.它将让您处理高级情况,如集成多个persistence.xml文件.


Oli*_*ver 15

在EclipseLink中,您可以执行以下操作:

Properties pros = new Properties();

pros.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, 
                 "META-INF/persistence-alternative.xml");


EntityManagerFactory factory = 
    Persistence.createEntityManagerFactory("pu-name", pros);
Run Code Online (Sandbox Code Playgroud)