我有一个由应用程序的不同部分加载的 Hibernate 域对象。有时延迟加载每个关联是有利的,而其他关联则最好在一个连接中加载整个事物。作为一个有希望的妥协,我发现:
使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。
hibernate.default_batch_fetch_size
:
使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。
我还看到:
hibernate.jdbc.fetch_size
:
非零值确定 JDBC 提取大小(调用 Statement.setFetchSize())。
那么 Hibernate 是否足够聪明,可以在批量获取时查看二级缓存?即为对关联的初始调用进行一次获取,然后下一个 X 调用命中缓存?这样我就可以进行我想要的延迟加载,但也可以经常访问缓存以进行更多类似批量的事务。
如果集合的全部内容已经包含在缓存中,它还会在访问集合时执行获取查询吗?
谢谢。