mybatis缓存机制

mybatis缓存机制

mybatis有一级缓存、二级缓存,并且预留了三级缓存的接口。
  1. 一级缓存
    一级缓存也叫本地缓存,MyBatis 的一级缓存是在会话(SqlSession)层面进行缓存的。
    MyBatis在开启一个数据库会话时,会创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象,Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。
    一级缓存
    当调用SqlSession的clearCache(),或者DML(insert|update|delete)操作时,会清空缓存。

  2. 二级缓存
    二级缓存是namespace 级别的,可以被多个SqlSession 共享。
    二级缓存总开关默认是开启的。只需要在*Mapper.xml文件中配置<'cache/>标签即可。
    二级缓存
    比如 <'cache eviction=“LRU” flushInterval=“120000” readOnly=“false” type=“org.mybatis.caches.memcached.MemcachedCache”>
    与第三方分布式缓存框架(如redis、memcached和ehcache)集成方式。

回收策略:

  1.  LRU – 最近最少使用的:移除最长时间不被使用的对象。
    
  2.  FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
    
  3.  SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。
    
  4.  WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
    

注意:
二级缓存需要将查询结果映射到POJO对象时,POJO对象需要实现java.io.Serializable接口,进行序列化和反序列化操作。如果存在父类、成员POJO都需要实现序列化接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值