Mybatis缓存机制 -个人学习笔记

以作用域来区分缓存分为: 一级缓存(sqlsession,默认开启)、二级缓存(namespace,默认关闭),都默认也是采用 PerpetualCache,HashMap 存储。

一级缓存:
默认开启,作用于sqlsession。
执行第一次查询时,会将数据存到(这个sqlsession)一级缓存中;之后如果执行了更新操作,就会清空缓存;而第二次执行相同的查询时就会先到缓存中查询是否存在对应的数据;在连接关闭后会自动清空缓存。
二级缓存
默认关闭,需要在mybatis总的配置文件中、mapper文件中设置开启,若其中某一个SQL语句不需要开启二级缓存也可以直接设置关闭二级缓存。这时实体类实现序列化接口,因为缓存不一定是存在内存中的;
数据库更新操作后,默认该作用域下所有 select 中的缓存将被清空;
二级缓存适用于:查询多、实时性要求不高的业务。比如数据的统计等等;设置刷新时间间隔,mybatis会每个一段时间自动清空缓存。
缺点:对于细粒度的信息的缓存实现效果很差。比如:人员信息,当一个人的信息发生改变后,缓存就会清空。这时候就需要对数据有针对性的缓存(三级缓存,也叫业务缓存);
分布式缓存
使用分布式框架(常见的有:redis、ehcache、memcached) 对缓存进行集中管理;
实现方式:只需实现mybatis的cache接口,就可以实现自己的缓存逻辑;
1、在总配置文件中整合框架
< cache type=“具体类型”/>
2、在建立一个缓存框架的配置文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值