Tag: 抓取策略

Hibernate的批量获取算法如何工作?

我在“Manning-Java Persistence with Hibernate”中找到了批量获取算法的描述: 什么是真正的批量获取算法? (…)想象一下批量大小为20,总共119个未初始化的代理必须分批加载。 在启动时,Hibernate读取映射元数据并在内部创建11个批处理加载器。 每个加载器知道它可以初始化多少个代理:20,10,9,8,7,6,5,4,3,2,1。目标是最小化加载器创建的内存消耗并创建足够的每个加载器可以生成可能的批量提取。 另一个目标是显着减少SQL SELECT的数量。 要初始化119个代理,Hibernate会执行7个批处理(你可能预计会有6个,因为6 x 20> 119)。 应用的批处理加载程序是Hibernate自动选择的五倍20倍,一倍10倍和一倍9倍。 但我仍然不明白它是如何工作的。 为什么11批装载机? 为什么批量加载器可以初始化:20,10,9,8,7,6,5,4,3,2,1个代理? 如果有人可以提出一步一步的算法…… 🙂