多个罐子,单个持久性单元解决方案?
包括我在内的一些人一直在努力将来自不同模块(jars)的实体合并到一个单一的持久性单元中(特别是对于JavaSE,例如在这里JPA 2.0:自动将实体类添加到PersistenceUnit *从不同的jar*)。根据答案,没有简单的直接方法来做到这一点。其中一个解决方案是在单个持久性单元文件中列出所有jar中的所有类,但这并不是很优雅。我可能不小心找到了另一种方法。通常,我的所有实体类都是使用注释映射的。至于解决方案:可以包含多个XML映射文件,例如:persistence.xml
主要.jar!元 INF/持久性.xml:
<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL">
<mapping-file>META-INF/order-mappings.xml</mapping-file>
<mapping-file>META-INF/customer-mappings.xml</mapping-file>
</persistence-unit>
映射文件可以放在不同的 jar 中。我注意到的是,它们可能包含没有任何属性的元素,例如:<entity>
订单.jar!元 INF/顺序映射.xml
<entity-mappings>
<entity class="com.company.Order"></entity>
</entity-mappings>
即使映射文件不映射任何属性,Java类中的注释也会被考虑在内,并且一切似乎都很好!这意味着只需包含来自特定 JAR 的 XML 映射文件,就可以很容易地将来自多个 jar 的实体包含在单个持久性单元中。
我的问题是:这是允许的JPA映射文件使用,还是只是我的持久性提供程序(Hibernate)的副作用?