二级缓存的一些概念

先说说一级缓存和二级缓存的区别

一级缓存:  存在session中,不可卸载,只要使用了session就用到了一级缓存,这是hibernate控制的,自己无法手动配置

       当我们使用了 getl/load/find query等查询来的数据,默认在session中就会有一份缓存数据,缓存数据就是从数据库中将一些数据拷贝一份放到对应的地方(比如内存),每次会先从缓存中查找,如果没有 再去数据库中查询.提高了查询效率,也较少了对数据库的直接操作

 

二级缓存:是sessionFactory级别的缓存 他的特点是比session的范围大,可以做到多个session共享此数据

同时 sessionFactory缓存还分两种:

       1.内缓存:预置的SQL语句,对象和数据库的映射信息(hibernate默认的)

       2.外缓存,存储的是我们允许使用二级缓存的对象(咱们平常说的二级缓存就是外缓存)

 

一般二级缓存中不经常进行改动,但是要多次查询信息;对数据并发时的安全没有要求

查询数据时会先从一级缓存中查找;如果没有,再从二级缓存中查找(要开启二级缓存设置才可以);如果还没有,就会去数据库中查找

 

要使用二级缓存,要先在cfg,xml中配置是否开启二级缓存,二级缓存的框架,是否查询二级缓存,二级缓存的策略等

                <!-- 默认不使用二级缓存. 要设置成true 使用二级缓存-->
<property name="hibernate.cache.use_second_level_cache">true</property> 
                <!-- 指定使用哪一个缓存框架(默认提供的) -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
                <!-- 是否查询二级缓存 -->
<property name="hibernate.cache.use_query_cache">true</property>
                <!-- 设置使用缓存的对象的策略 -->
<class-cache usage="read-only" class="com.ut.model.ClassRoom"/> 

 

即使开启了二级缓存功能,也可以选择不查询二级缓存

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值