JPA と Hibernate での N 1 問題への取り組み
N 1 問題は、リレーショナル データを取得するために過剰なクエリが実行されるときに発生します。たとえば、Hibernate では、最初のクエリで N 個のレコードがフェッチされ、それぞれに関連付けられたレコードを取得するには N 個の追加クエリが必要です。
この問題を解決するには、JOIN FETCH:
を利用します。この JOIN FETCH は、ポスト関連付けを積極的にフェッチし、N 1 個のクエリを排除します。
複数の子関連付けのフェッチが必要な場合は、最初のクエリで 1 つのコレクションをフェッチし、後続のクエリで他のコレクションをフェッチします。
自動検出
統合テストは、N 1 問題の検出に最適です。 db-util プロジェクトは、生成される SQL ステートメントの予想数を検証するための自動 JUnit アサートを提供します:
以上がJPA と Hibernate の N 1 問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。