我有一個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