@ManyToOneに関連付けられているのは、対応するフィールドが( )@BatchSizeとしてマークされている場合にのみ意味があります。lazylazy=true
実際、フィールドがそうでない場合lazy、それは、囲んでいるエンティティがロードされているため、定義上すでにロードされているため、データベース呼び出しの問題は当てはまりません。
Person要素のコレクションShoesPair(ShoesPair.class)があり、その中に怠惰とマークされたフィールドが存在するクラスを想像してみてくださいowner(オプションであり、特定の靴のペアを取得するときに重要な情報を実際にもたらさないため)。
所有者を取得するために、 25足の靴(25個のオブジェクト)を反復処理したいと考えています。ShoesPair
ownerフィールド(1人に対応)にのみ注釈が付けられている場合、データベースへの選択@ManyToOneは25になります。
ただし、で注釈を付けると、呼び出しは5回@BatchSize(size=5)だけになるため、パフォーマンスが向上します。
Hibernateのドキュメントから、バッチサイズはコレクションだけに適用されるわけではないことが正確に示されています。
コレクションのバッチフェッチを有効にすることもできます。
Hibenateは、特に@OneToManyケースについて言及しています。これらのケースは、ケースの90%で。とマークされているフィールドに適用されるためlazyです。