如何在JPA使用替代的“sistence.xml”?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我知道,根据指示:

Persistence.createEntityManagerFactory("persistence-unit-name");

JPA持久化机制读取“sistence.xml”文件,查找称为“Persistence-Unit-name”的持久性单元,并基于它构造EntityManagerFactory。

我的问题是,我怎么能强制JPA获取与“sistence.xml”不同的文件??例如,“Persistence-test.xml”。

提问于
用户回答回答于

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

Properties pros = new Properties();

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


EntityManagerFactory factory = 
    Persistence.createEntityManagerFactory("pu-name", pros);
用户回答回答于

没有标准的JPA方法可以做到这一点,尽管单独的JPA提供者可能会提供一种方法。我建议采用标准的方法,为main和test提供不同的类路径。

例如,如果您使用Maven,并且有两个META-INF/persistence.xml文件,一份在src/main/resources

还有一个在src/test/resources,测试就会发现,因为Maven将测试类/资源放在类路径中的主类/资源之前。您可以很容易地将Ant配置为以类似的方式工作。请考虑使用Spring的JPA支持。

扫码关注云+社区

领取腾讯云代金券