hibernateの@BatchSizeアノテーションは、遅延読み込みエンティティのバッチフェッチを可能にします。例えば。私のようなものだ場合:遅延読み込み関係ごとに@BatchSizeを使用しないのはなぜですか?
public class Product {
@OneToMany(fetchType=LAZY)
@BatchSize(size=10)
private ProductCategory category;
}
を、私は、製品のカテゴリを得れば今、Hibernateは現在のセッションであり、まだそのカテゴリフィールドが初期化されていたされていない10のまでより多くの製品のカテゴリを取得します。これにより、大量のSQLコールがデータベースに保存されます。ここまでは順調ですね。 なぜ@BatchSizeアノテーションをすべての遅延読み込み関係で使用しないのでしょうか?結局のところ、なぜデータベースへの追加呼び出しが必要なのでしょうか?明らかにこれに理由がなければなりません。さもなければ、Hibernateの人はそれをデフォルトにすることができましたが、私は現在それを見ることができません。
ちょっとした修正です。 "バッチフェッチを設定するには、クラスレベルとコレクションレベルの2つの方法があります。"([docs])(http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance。 html#performance-fetching-batch)。したがって、 'Product.category'クラスではなく' ProductCategory'クラスに '@BatchSize'を置くべきです。 –