hibernate的二级缓存及hibernate 的查询缓存

1)二级缓存(参考TestCache.test2())
    默认关闭。属于SessionFactory级别缓存,可以被多个不Session对象访问。启用二级缓存后查找机制:
session查对象--->一级缓存查找(on)--->二级缓存查找(off)--->数据库查找.
   a)二级缓存适用环境
       该对象被多个不同请求频繁访问。
       该对象数据状态基本不发生改变。
   例如:当当网中查看产品详细页面功能。
   b)二级缓存使用方法
      二级缓存实现机制非常复杂,需要考虑缓存对象更新、对象命中率等问题,因此Hibernate采用了第三方提供的二级缓存组件。
     ehcache.jar二级缓存组件的使用方法:
     ----引入ehcache.jar组件开发包
     ----在src下添加ehcache.xml配置文件,用于设置二级缓存组件管理参数。
       <defaultCache   
        maxElementsInMemory="1000" //指定内存缓存对象的最大数量
        eternal="false" //指定缓存的对象是否长期有效
        timeToIdleSeconds="120"//指定对象空闲时间
        timeToLiveSeconds="300"//指定对象存活时间
        overflowToDisk="true"//指定超出缓存数量后,是否采用磁盘存储
        />
 
     ----在hibernate.cfg.xml配置中指定开启二级缓存,并指定采用哪个二级缓存组件
<!-- 开启二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">
true
</property>
<!-- 指定二级缓存组件 -->
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>
     ----哪些类型对象需要使用二级缓存,需要在hbm.xml中设置启用
             <class name="tarena.entity.Order" table="d_order">
<cache usage="read-only" region="sampleCache1"/>
                 <id/>...
             </class>
        c)二级缓存的管理方法
             sessionFactory.evict(类型或对象);//移除某一类型或某个对象
             sessionFactory.evictCollection();//移除集合


2)查询缓存(参考TestCache.test3())
        前面一级和二级缓存都只能缓存单个对象。如果查询的是字符串、数组或集合数据,需要使用查询缓存才可以缓存下来。


      a)查询缓存适用的环境
         同一个SQL频繁调用.
         查询结果集数据很少改变
         结果集数据量不要太大
       例如当当网主界面左侧类别菜单功能比较适合。
      b)查询缓存的使用方法
         ---开启二级缓存(参考前面步骤)
         ---在hibernate.cfg.xml中启用查询缓存配置
<!-- 指定开启查询缓存 -->
<property name="hibernate.cache.use_query_cache">
true
</property>
         ---在query.list()调用之前设置启用查询缓存机制
              query.setCacheable(true);//启用查询缓存机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值