论坛首页 Java企业应用论坛

Hibernate List和Iterator查询

浏览 9097 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-04-03  
众所周知,List仅仅会填充二级缓存,却不能利用二级缓存,而iterator可以读二级缓存,然而无法命中的话,效率却很低。一个最好的办法就是,第一次查询使用List,随后的查询使用iterator,现在的问题是如何做到第一次查询使用List,随后查询使用iterator。

先来考察一下缓存的作用:缓存之所以可以命中,前提条件是该数据被使用的非常频繁,同时更新的可能性相当小,如果数据会频繁修改,那么毫无疑问,缓存不会带来任何好处。明确了这一点,我们就明白什么对象应该进行缓存了。显然,对于那些经常会被访问到的小批量的诸如基础信息,用户和权限信息是非常适合进行缓存的,这些数据我们可以在应用启动的时候就执行一次list方法查询,进行缓存填充(例如写一个InitBean类进行数据缓存初始化),此外在数据被修改的时候,再次执行list方法,进行缓存填充。而在使用这些数据的其他地方,统统使用iterator方法。这样就可以实现所谓的第一次查询使用List,随后的查询使用iterator了。
   发表时间:2006-04-03  
对于小数据量的表这的确是个好办法,这样就不用自己在应用层刻意去写缓存叻
0 请登录后投票
   发表时间:2006-04-04  
小数据量是指百万条记录以下的情况吗?
0 请登录后投票
   发表时间:2006-04-06  
前几天找到一篇不错的文章,讲解hibernate cache的:


Speed Up Your Hibernate Applications with Second-Level Caching
http://www.devx.com/dbzone/Article/29685/1954?pf=true
0 请登录后投票
   发表时间:2006-04-06  
很及时,正为此苦恼.
Query Cache为什么value不是一堆id啊,如果value是id,那么就不用有更新的时候重取一次数据库(取的是想关的所有数据)而是只取一堆id,然后在通过id从二级Cache里面查找,那不是就完美了,唉.现在可费了劲了
0 请登录后投票
   发表时间:2006-04-07  
那么请问query的uniqueResult方法会不会填充2级缓,并利用?
0 请登录后投票
   发表时间:2006-04-12  
只要结构是对象,hibernate就会填充二级缓存.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics