JPA:如何避免硬编码jpa-jar位置?

时间:2011-02-14 10:35:21

标签: java jpa jpa-2.0

以下是事实:

  1. 我的webapp中有2个包含JPA实体的jar,
  2. 和来自一个jar(jar A)的实体具有另一个jar(jarB)中的实体的引用
  3. 我将<jar-file>/WEB-INF/lib/MyJarB.jar</jar-file>放在jar A
  4. 的persistence.xml中

    但是我不想对 /WEB-INF/lib/MyJarB.jar 进行硬编码,因为我可以在测试环境中测试实体,并希望有另一种方法来指定实体jar除了硬编码路径之外的依赖关系。

    我尝试了<jar-file>MyJarB.jar</jar-file><jar-file>./MyJarB.jar</jar-file>,但都失败了。

    请分享您的想法。

2 个答案:

答案 0 :(得分:3)

仅为纯测试创建另一个persistence.xml,并将其放在项目B本身或另一个包含测试类的子项目中。

答案 1 :(得分:1)

我建议不要将persistence.xml与JAR放在一起,因为持久性定义是应用程序关注的问题。因此,最好在 web 模块中设置persistence.xml,同时声明两个JAR:

<jar-file>/WEB-INF/lib/MyJarA.jar</jar-file>
<jar-file>/WEB-INF/lib/MyJarB.jar</jar-file>

如果你在web模块中有测试,并且你想使用另一个persistece定义,只需创建一个备用persistence.xml,比如src/test/resources,然后使用它来实例化你的EntityManagerFactory。