码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis 缓存

时间:2019-03-12 12:02:38      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:hashmap   增删改   map   net   二级缓存   收集   一个   作用域   顺序   

mybatis默认开启一级缓存。开启二级缓存也很简单,只需要将POJO实现 Serializable 接口,并在映射文件以及mybatis配置文件开启二级缓存即可。

 

1、一级缓存的作用域是SqlSession范围,当在同一个sqlSession两次调用同一个Mapper方法时,第一次执行完毕会将数据库中查询的结果写到缓存(内存,即sqlSession中的一个HashMap),如果SqlSession执行了增删改操作并且提交到数据库,MyBatis则会清空SqlSession中的一级缓存。

2、二级缓存是mapper级别的缓存,其作用域是mapper的同一个namespace(Dao接口)。不同的SqlSession两次执行相同的namespace下的sql语句,且向sql中传递的参数也相同,即最终执行相同的sql语句,则第一次执行完毕会将数据库中查询的数据写到缓存。

3、二级缓存默认使用LRU置换策略,要另外配置去mybatis配置文件配置eviction参数即可,具体其他策略:

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

 

参考:缓存实现源码分析

Mybatis 缓存

标签:hashmap   增删改   map   net   二级缓存   收集   一个   作用域   顺序   

原文地址:https://www.cnblogs.com/LinsenLi/p/10515651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!