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