JPAをHibernateで使用しています。オブジェクトの1つの属性を変更して更新すると、生成されたSQLは、更新されているすべての列を表示します。なぜそれは変更された列だけを更新しないのですか?私はそれがより最適化されると思うので、それを達成する方法はありますか?JPA Hibernateの更新クエリではなぜですか?すべての属性がSQLで更新されます
1
A
答えて
5
デフォルトでは、hibernateには更新クエリのすべてのフィールドが含まれます。これを除外したい場合は、カスタムアップデートHQLを使用するか、hibernateをに設定して、このarticleのように更新クエリの変更されていないフィールドを除外することができます。
これは、クラスマッピングにdynamic-update="true"
を追加することによって行われます。
<class ... table="your_table" .... dynamic-update="true">
または大量のデータが含まれ、これはシステムのパフォーマンスに大きな影響を持つことになります。 hereのようにパフォーマンスに影響を与える可能性があります。したがって、実装する前にコードのパフォーマンスを測定してください。
詳細については、hereをご覧ください。
アノテーションを使用している場合は、
@org.hibernate.annotations.Entity(selectBeforeUpdate=true)
それは休止状態、特定のアノテーション、JPAでは使用できません。ここには、詳細にリンクする良いarticleがあります。
0
私はゆっくりと私を怒らせていた最後の4-5日間問題がありました。
削除操作では、主キー列だけでなくすべての列が使用されていました。
例:
DELETE FROM MYTABLE WHERE ID=? AND NAME=? AND VALUE=?
私は "dynamicUpdate = true" の注釈を削除
は、Hibernateはすなわち、右のSQLを生成し始めました。DELETE FROM MYTABLE WHERE ID=?
それはVALUE
がCLOBたとき、Oracle 11gの上の厄介な問題を引き起こしていました。
関連する問題
- 1. JPA CriteriaQueryが更新クエリを提供しないのはなぜですか?
- 2. データベースがこのLINQクエリで更新されないのはなぜですか?
- 3. SQLクエリが更新されない
- 4. Greasemonkeyスクリプトが更新されないのはなぜですか?
- 5. tableviewcellが更新されないのはなぜですか?
- 6. iPad - ラベルが更新されないのはなぜですか?
- 7. WPF/MVVM:GUIが更新されないのはなぜですか?
- 8. リストビューが更新されないのはなぜですか?
- 9. $カウントが更新されないのはなぜですか?
- 10. UIProgressBarが更新されないのはなぜですか?
- 11. TileList selectedIndexが更新されないのはなぜですか?
- 12. Jquery-mobileの属性変更で更新しますか?
- 13. オブジェクトの属性が更新されないことがあるのはなぜですか?
- 14. モデル原因の属性を更新して別のテーブルをクエリするのはなぜですか?
- 15. SqlクエリでImgファイルのパスが更新されない
- 16. ObservableCollectionが更新された時点で、Datagridの項目がすべてのクライアントで更新されない
- 17. HierarchicalData dataProviderが更新されたときにAdvancedDataGridが更新されないのはなぜですか?
- 18. 更新コマンドが同じIDを持つすべてのフィールドを更新するのはなぜですか?
- 19. jspでModelMap属性の値が変更されるのはなぜですか?
- 20. 属性の変更が通知されず、テーブルが更新されない
- 21. 更新クエリで新しい行が作成されるのはなぜですか?
- 22. 入力の値属性が変更されないのはなぜですか?
- 23. エンティティマネージャを更新してもデータベースが更新されないのはなぜですか?
- 24. なぜサイトの変更が更新されないのですか?
- 25. xmlstarletは属性を更新します
- 26. 更新前のリスナーがHibernateで使用されているときにレコードが更新されない
- 27. 更新ステートメントがテーブルを更新しないのはなぜですか?
- 28. 拡張クラスからdict属性を更新すると、基本クラスが更新されます。どうして?
- 29. コンテナの高さが更新されなかったのはなぜですか?
- 30. autofacをインストールすると、すべてのweb.configがアセンブリリダイレクトで更新されるのはなぜですか?
これは、休止状態を使用している場合のみ正常に動作します。しかし、私はJPAを使用しているので、私はpersistence.xmlのみを使用し、hibernate.propertiesは使用しません。私はpersistence.xml内のすべての宣言を com.kids.domain.Child のように作成します。このフラグを使用することはできません。 –
Deepak
@Deepak:遅れて申し訳ありませんが、詳細を使って回答を更新しました。 – ManuPK
私はHibernateチームがデフォルトですべての列を更新することを選択したのは不思議です –