バッチフェッチアルゴリズムのこの説明は、「Manning-Java PersistencewithHibernate」で見つかりました。
実際のバッチフェッチアルゴリズムとは何ですか?(...)バッチサイズが20で、バッチでロードする必要がある初期化されていないプロキシの総数が119であると想像してください。起動時に、Hibernateはマッピングメタデータを読み取り、11個のバッチローダーを内部で作成します。各ローダーは、初期化できるプロキシの数を知っています:20、10、9、8、7、6、5、4、3、2、1。目標は、ローダー作成のためのメモリ消費を最小限に抑え、可能なバッチフェッチを生成できます。もう1つの目標は、明らかにSQLSELECTの数を最小限に抑えることです。119個のプロキシを初期化するために、Hibernateは7つのバッチを実行します(6 x 20> 119であるため、おそらく6つを期待していました)。適用されるバッチローダーは、Hibernateによって自動的に選択される5回20、1回10、および1回9です。
しかし、私はまだそれがどのように機能するのか理解していません。
- なぜ11個のバッチローダー?
- バッチローダーが初期化できる理由:20、10、9、8、7、6、5、4、3、2、1プロキシ?
誰かが段階的なアルゴリズムを提示できるなら...:)