hibernate 二级缓存

hibernate 二级缓存

ID:14882317

大小:43.00 KB

页数:4页

时间:2018-07-30

hibernate 二级缓存_第1页
hibernate 二级缓存_第2页
hibernate 二级缓存_第3页
hibernate 二级缓存_第4页
资源描述:

《hibernate 二级缓存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hibernate二级缓存hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_class,我们这里用ehcache,在2.1中就是hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider如果使用查询缓存,

2、加上hibernate.cache.use_query_cache=true缓存可以简单的看成一个Map,通过key在缓存里面找value。Class的缓存对于一条记录,也就是一个PO来说,是根据ID来找的,缓存的key就是ID,value是POJO。无论list,load还是iterate,只要读出一个对象,都会填充缓存。但是list不会使用缓存,而iterate会先取数据库selectid出来,然后一个id一个id的load,如果在缓存里面有,就从缓存取,没有的话就去数据库load。假设是读写缓存,需要设置:<cacheusage="read-write"/>如果你使

3、用的二级缓存实现是ehcache的话,需要配置ehcache.xml其中eternal表示缓存是不是永远不超时,timeToLiveSeconds是缓存中每个元素(这里也就是一个POJO)的超时时间,如果eternal="false",超过指定的时间,这个元素

4、就被移走了。timeToIdleSeconds是发呆时间,是可选的。当往缓存里面put的元素超过500个时,如果overflowToDisk="true",就会把缓存中的部分数据保存在硬盘上的临时文件里面。每个需要缓存的class都要这样配置。如果你没有配置,hibernate会在启动的时候警告你,然后使用defaultCache的配置,这样多个class会共享一个配置。当某个ID通过hibernate修改时,hibernate会知道,于是移除缓存。这样大家可能会想,同样的查询条件,第一次先list,第二次再iterate,就可以使用到缓存了。实际上这是很难的,因为你无法判断什么时候

5、是第一次,而且每次查询的条件通常是不一样的,假如数据库里面有100条记录,id从1到100,第一次list的时候出了前50个id,第二次iterate的时候却查询到30至70号id,那么30-50是从缓存里面取的,51到70是从数据库取的,共发送1+20条sql。所以我一直认为iterate没有什么用,总是会有1+N的问题。(题外话:有说法说大型查询用list会把整个结果集装入内存,很慢,而iterate只selectid比较好,但是大型查询总是要分页查的,谁也不会真的把整个结果集装进来,假如一页20条的话,iterate共需要执行21条语句,list虽然选择若干字段,比iterat

6、e第一条selectid语句慢一些,但只有一条语句,不装入整个结果集hibernate还会根据数据库方言做优化,比如使用mysql的limit,整体看来应该还是list快。)如果想要对list或者iterate查询的结果缓存,就要用到查询缓存了查询缓存首先需要配置hibernate.cache.use_query_cache=true如果用ehcache,配置ehcache.xml,注意hibernate3.0以后不是net.sf的包名了<cachename="net.sf.hibernate.cache.StandardQueryCache"maxElementsInMemo

7、ry="50"eternal="false"timeToIdleSeconds="3600"timeToLiveSeconds="7200"overflowToDisk="true"/><cachename="net.sf.hibernate.cache.UpdateTimestampsCache"maxElementsInMemory="5000"eternal="true"overflowToDisk="true"/>然后query.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。