栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis缓存机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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都需要实现序列化接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号