休止状態がそのスキーマ メタデータを使用して HQL または必要に応じて SQL を生成する方法を知りたい特定の状況があります。
そのため、オブジェクト グラフを DB に更新する必要がある状況があります。取り決めは、null ではない (またはデフォルトではない) 値を持つフィールドのみを更新する必要があるということです。これが私の使用例です。バックエンド サポート チームが特定の製品の約 25 ~ 30 フィールドを更新できるようにする一括編集機能があります。そのため、製品 ID が提供され、列に対する値を更新する必要があります。
ただし、この場合に休止状態を使用すると、DB からビッグ オブジェクト グラフ全体を取得し、特定のフィールドを更新して、Session.merge を実行します。いいえ。編集の数が増えており、これにより CPU 使用率が上昇しており、5 倍の負荷に合わせて再設計する必要があります。
そのため、SQL クエリの生成に移り、後でバッチ更新を実行します (SQL で直接実行することを意味する場合でも)。しかし、Hibernate はすでにメタデータをスマートに使用してクエリを生成しているのではないかと思っていました。null 以外の値を持つフィールドのみをクエリ生成に含めることを許可する、ある種のインターセプターしか使用できなかった場合。
ここで大きな漠然とした質問があります: hibernate はどのようにクエリを生成しますか? 開始するのに適した場所はありますか、またはこのようなことが以前に試みられたかどうかを誰かが知っていますか.
この問題は、MySQL への CSV の一括アップロードのように見えるかもしれませんが、そうではありません。一括アップロード/編集は、主に同じテーブルのレコードの編集に関するものです。この場合、フィールドは 10 個の異なるテーブルに属しているため、関連する結合を推測する必要があります。SQLコードを生成するための汚いIF-ELSEステートメントを避けるために、休止状態を使用しようとしているだけです。