web-dev-qa-db-ja.com

Hibernateの2つの構成ファイルの目的は何ですか?

これは私の現在のプロジェクト構造です:

pom.xml
/src
  /main
    /resources
      hibernate.cfg.xml
      /META-INF
        persistence.xml

両方のファイルに非常によく似た設定パラメータがあります(hibernate.cfg.xmlおよびpersistence.xml)、奇妙に見えますが、これは私が多くのオンライン例やチュートリアルで見たものです。なぜ2つのファイルが必要なのか理解できません。 1つで作業することは可能ですか?説明してください。

ps。たとえば、hibernate.dialect両方のファイルで、または1つだけで十分ですか?ある場合、どちらを使用しますか?

53
yegor256

Hibernateの専用APIを使用している場合は、hibernate.cfg.xmlが必要です。 JPA、つまりHibernate EntityManagerを使用している場合は、persistence.xmlが必要です。

したがって、Hibernate独自のAPIまたはJPAを使用するため、通常は両方を必要としません。

ただし、Hibernate Proprietary APIを使用していて、すでにhibernate.cfg.xml(およびhbm.xml XMLマッピングファイル)があるが、 JPAの使用を開始すると、hibernate.cfg.xmlプロパティのpersistence.xmlhibernate.ejb.cfgfileを参照して既存の構成ファイルを再利用できるため、両方のファイルを使用できます。既存のhbm.xmlファイルを再利用することは、IMOが現実的なシナリオであり、両方を保持することを正当化できる場合があります(長期的にはJPAアノテーションに移行する場合でも)。

参考文献

68
Pascal Thivent

hibernate.cfg.xmlはHibernate用です。 persistence.xmlはJPA用です。

JPAなしでHibernateを実行する場合、後者は必要ありません。

JPAを実行する場合は、プロバイダー実装、つまりHibernate、EclipseLinkなどが必要です(他の正当なJPA実装がある可能性がありますが、今は確認する時間がありません)。

17
duffymo