私はSpring JPAとHibernateでプロジェクトを使用しています。 persistence.xmlのほとんどは、applicationContext.xmlファイルで指定できます。SpringとHibernateを操作するときにpersistence.xmlが要求されますか?
persistence.xmlはもう必要ですか?
ありがとうございました。 012 JPAを介してHibernateを使用している場合、Spring JPAを使用していても、
私はSpring JPAとHibernateでプロジェクトを使用しています。 persistence.xmlのほとんどは、applicationContext.xmlファイルで指定できます。SpringとHibernateを操作するときにpersistence.xmlが要求されますか?
persistence.xmlはもう必要ですか?
ありがとうございました。 012 JPAを介してHibernateを使用している場合、Spring JPAを使用していても、
更新: Spring 3.1はpersistence.xml
フリーJPA構成をサポートします。Spring 3.1 M2: Configuration Enhancementsを参照してください。
ダリオの答えは実用的には良いが、技術的には正しくない。 - スタンドアロン環境に、persistence.xml
は持続性プロバイダによって解析される
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
:
PersistenceProvider
は、二つのファクトリメソッドを有します。
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- アプリケーションサーバー環境では、persistence.xml
はアプリケーションサーバーによって解析され、内容はPersistenceUnitInfo
として渡されます。
スプリングのLocalContainerEntityManagerFactoryBean
は、アプリケーションサーバー環境をエミュレートします。したがって、persistence.xml
自体を解析し、その内容をアプリケーションコンテキストの値とマージし、2番目のファクトリメソッドを使用してそれを永続性プロバイダに渡します。
しかし、persistence.xml
データを取得するプロセスは設定可能です:
あなたはpersistenceXmlLocation
プロパティを使用してpersistence.xml
ファイルの名前を設定することができます - それは、アプリケーションサーバのデフォルトのJPAの初期化戦略との競合を避けるために便利です。
PersistenceUnitInfo
の送信元を完全に上書きするには、カスタムPersistenceUnitManager
戦略を設定します。そのような管理者がそのまま使用可能ではないですが
だから、実際には、カスタムPersistenceUnitManager
を書き込むことによってpersistence.xml
ずに春にJPAを設定することができます。
persistence.xml
が必要です。 Hibernateを直接使用している場合は、persistence.xml
は必要ありません。
JPAプロバイダとしてのHibernateを使用するSpring JPAにpersistence.xmlファイルが必要な理由を教えてください。 – Suvasis
JPA仕様では、ファイルが必要な場所は明記されていませんが、EntityManagerFactoryとEntityManagerの契約の定義や実質的には仕様全体にわたって、persistence.xmlファイルは繰り返し記述されています。
最近、persistence.xmlをまったく使用せずに、Hibernate 3.6でJPA 2.0をプログラム的に構成できるかどうかという疑問に対処する必要がありました。
これはできないと判断しましたが、ファイルを最小限の構成に設定することができます。ファイルに少なくとも永続性ユニットの名前が含まれている必要があると判断しました。残りの情報は、プログラマチックにエンティティマネージャファクトリにパラメータとして提供することができます。
私は春を使ったことが一度もありません。したがって、この問題を克服するためのトリックを使用するかどうかはわかりません。
非常に良い答え、私はこの日のためにすべての票を使い果たしていないならば、あなたに投票したいと思います。私は、OPが不必要で多少複雑なので、春の中で掘り起こすことを気にしないと思った。 – darioo
すべての説明のための答え+1ありがとう – user373201