我有一个Hibernate域对象,它被应用程序的不同部分加载。有时延迟加载每个关联和其他的更有利于在一个连接中加载整个事物。作为一个希望愉快的妥协,我发现:休眠:batch_size?二级缓存?
使用批量获取,Hibernate可以加载几个未初始化的代理,如果一个代理被访问。批量抓取是对懒惰选择抓取策略的优化。
hibernate.default_batch_fetch_size
:
使用批量抓取,Hibernate可以加载 如果一个访问代理其他未代理。批量抓取是对懒惰选择抓取策略的优化。
我也参见:
hibernate.jdbc.fetch_size
:
非零值,指定JDBC抓取大小(调用Statement.setFetchSize())。
那么Hibernate是否足够聪明,可以在进行批量抓取时查看二级缓存?也就是说,是否有初始调用访问关联,然后接下来的X个调用是否会触发缓存?通过这种方式,我可以获得我想要的延迟加载,但也经常为更大容量的事务启动缓存。
如果集合的全部内容已经包含在缓存中,它是否仍然执行对集合访问的提取查询?
谢谢。
现在,我也想知道答案。 – Zoidberg 2009-08-25 16:58:11
标记我的问题:-) – davidemm 2009-08-25 17:20:56