私を含む一部の人々は、異なるモジュール(jar)からのエンティティを単一の永続化ユニットにマージするのに苦労しています(特にJavaSE、たとえばここではJPA 2.0:エンティティクラスをPersistenceUnitに*異なるjarから*自動的に追加します)。答えに基づいて、それを行う簡単な直接的な方法はありません。解決策の1つは、すべてのjarのすべてのクラスを単一の永続性ユニットファイルにリストすることですが、それはあまり洗練されていません。誤って別の方法を見つけた可能性があります。通常、すべてのエンティティクラスはアノテーションを使用してマップされます。解決策として:persistence.xml
複数のXMLマッピングファイルを含めることができます。例:
main.jar!META-INF / persistence.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>
要素が含まれている可能性があることです。例:
order.jar!META-INF / order-mappings.xml
<entity-mappings>
<entity class="com.company.Order"></entity>
</entity-mappings>
マッピングファイルが属性をマッピングしていなくても、Javaクラスのアノテーションが考慮され、すべてが正常に機能しているように見えます。つまり、特定のJARからのXMLマッピングファイルを含めるだけで、複数のjarからのエンティティを単一の永続性ユニットに簡単に含めることができます。
私の質問は、これは許可されたJPAマッピングファイルの使用ですか、それとも永続性プロバイダー(Hibernate)の単なる副作用ですか?