Wie funktioniert der Batch-Abruf-Algorithmus von Hibernate?

Ich habe diese Beschreibung des Batch-Hol-Algorithmus in "Manning - Java Persistence with Hibernate" gefunden:

Was ist der echte Batch-Abruf-Algorithmus? (...) Stellen Sie sich eine Stapelgröße von 20 und eine Gesamtanzahl von 119 nicht initialisierten Proxys vor, die in Stapeln geladen werden müssen. Beim Start liest Hibernate die Mapping-Metadaten und erstellt intern 11 Batch-Loader. Jeder Loader weiß, wie viele Proxys initialisiert werden können: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1. Ziel ist es, den Speicherverbrauch für die Loader-Erstellung zu minimieren und genügend Loader zu erstellen, die alle initialisieren möglicher Batchabruf kann erzeugt werden. Ein weiteres Ziel ist es natürlich, die Anzahl der SQL SELECTs zu minimieren. Zum Initialisieren von 119 Proxys führt Hibernate sieben Batches aus (Sie haben wahrscheinlich sechs erwartet, da 6 x 20> 119). Es werden fünfmal 20, einmal 10 und einmal 9 Batch-Loader angewendet, die von Hibernate automatisch ausgewählt werden.

aber ich verstehe immer noch nicht, wie es funktioniert.

Warum 11 Batchlader?Warum können Batchloader initialisieren: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 Proxies?

Wenn jemand einen schrittweisen Algorithmus vorstellen könnte ...:)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage