JPA
という標準JEE
アプリケーションがあります。以前に切り離されたエンティティをマージすると、エンティティマネージャはequals
またはhashcode
を使用して、マージするオブジェクトがすでに管理されているかどうかを調べます。一般に、エンティティマネージャがhashcode
またはequals
を使用する場合は、これは私が使用するJPAエンジンの影響を受けますか?たとえばHibernate
またはEclipse Link
?JPAでエンティティマネージャがhashcodeとequalsを使用する方法
0
A
答えて
0
これは実装に依存しますが、エンティティのハッシュコードまたは同等のメソッドを使用することは、JPAメカニズムにとって信頼できるものではありません。 EclipseLinkでは、equalsまたはhashcode実装を使用してルックアップや比較を実行しません。ハッシュコードが必要な場合は、System.identityHashCodeを使用します。
特に、コレクションタイプを使用するマッピングでは、正しくないまたは非効率なハッシュコードと等価メソッドがアプリケーションに悪影響を及ぼします。私はあなたがいくつかの大きな必要性なしでそれらを無効にしないことをお勧めしたい。
0
エンティティの状態を計算するには、HibernateはDirty checkingを使用します。汚れは、デフォルトのHibernateのチェックをすべての管理対象エンティティプロパティにより、
をチェックして。エンティティがロードされるたびに、Hibernateはすべてのエンティティの追加コピーを作成し、プロパティ値を作成します。フラッシュ時には、すべての管理対象エンティティプロパティがロード時のスナップショット値と照合されます。
ダーティチェックは、ロード時にすべてプロパティ値をチェックすることによって実行されます。
equals
とhashcode
の関係はありません。entitymanager
は内部でHibernateで動作します。
関連する問題
- 1. EclipseLinkを使用したJPAエンティティのequals()およびhashcode()
- 2. ハッシュマップオーバーライドequalsとhashcode
- 3. プレーフレームワークで複数のエンティティマネージャを使用する方法 - スプリングデータJPA?
- 4. スカラーでequalsとhashCodeを実装する方法
- 5. embeddable jpaクラスはequalsとhashCodeを実装する必要がありますか?
- 6. gettersはequalsとhashcodeで使用できますか?
- 7. hashcode()とequals()について
- 8. javaのequalsとhashcodeをオーバーライドするタイミング
- 9. エンティティマネージャとjpaを使用してセッションにユーザーデータを格納する方法
- 10. CXF JAXBベーシックEquals/Hashcode
- 11. equalsメソッドとhashCodeメソッドを使用した汎用インターフェースは可能ですか?
- 12. equalsおよびhashCodeの汎用リフレクションヘルパーメソッド
- 13. エンティティマネージャとJPAを使用するとオブジェクトのみが返される
- 14. jpaエンティティのIdClass(合成キー)でequals()とhashCode()をオーバーライドする必要があります
- 15. hashCode/equalsコントラクトのJUnit理論
- 16. インタフェース内のtoString、hashcode、equalsメソッド
- 17. hashcodeとequalsメソッドをオーバーライドして固有の質問を生成する方法
- 18. いつhashcodeとequalsメソッドが必要ですか?
- 19. JPA /エンティティマネージャを使用してオブジェクトを更新する
- 20. jaxwsでwsimportを使用してequals()およびhashcode()メソッドを生成する方法
- 21. hibernateはequals()とhashCode()をどのように使用しますか?
- 22. Spring JPA永続エンティティマネージャを使用するときにロールスワップを処理する方法は?
- 23. hashCodeとequalsメソッドをcompareToメソッドでオーバーライドする必要がありますか?
- 24. equalsをオーバーライドする必要がない場合のHashCodeのオーバーライド
- 25. ObjectでequalsとhashCodeが定義されているのはなぜですか?
- 26. オブジェクトクラスのメソッドを直接使用できる場合、Collectionインターフェイスにequals()とhashCode()がある理由
- 27. SpringデータJPAでAfterとEqualsを使用してメソッド名を作成する方法?
- 28. Java:自動equals()およびhashCode()
- 29. HashSetのは、hashCode()およびequals()
- 30. のApache Karafは、私がコンテナからエンティティマネージャを使用するエンティティマネージャ
EntityManagerはhashCode/equalsをまったく使用しません。これらはjava.util.Collectionクラスで使用されます。 – DN1
エンティティがすでに管理されている場合、マージ中にエンティティマネージャがどのように検出されますか? –
Collection.contains? EntityManagerは、 – DN1