Mybatis二级缓存失效及二级缓存使用简介

1.Mybatis二级缓存使用简介:

        1.1:开启全局二级缓存配置: 

        1.2:在对应的xxxmapper.xml文件加入标签

  注意:二级缓存是基于命名空间namespace的,一级缓存是基于sqlSession的,也就是与数据库之间的一次会话。

                1.2.1:cache的相关属性介绍:

                     eviction: 缓存的回收策略

                                 LRU(默认):最近最少使用,移除最长时间不被使用的对象

                                 FIFO:先进先出,安对象进入缓存的顺序来移除它们

                                 SOFT:软引用,移除基于垃圾回收器的状态和软引用规则的对象

                                 WEAK: 弱引用,更积极的移除基于垃圾收集器状态和弱引用规则的对象

                    flushInterval:缓存刷新间隔 缓存多长时间清空一次,默认不清空,设置一个毫秒值

                    readOnly:是否只读 。

                                        true:只读,mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。 mybatis为了加快获取速度,直接会将数据在缓存中的引用交给用户,不                                                      安全,但速度快。

                                         false:非只读,mybatis觉得获取的数据可能会被修改 mybatis会利用序列化&反序列化的技术克隆一份新的数据给你,安全,但速度慢。

                    size:缓存最多存放多少个引用。

                    type:指定自定义缓存的全类名,实现Mybatis提供的Cache接口即可。

      1.3:因为上面说到mybatis会用到序列化&反序列化技术克隆一份新的数据,所以对应的pojo需要实现序列化

        Mybatis二级缓存失效及二级缓存使用简介_第1张图片

 2.mybatis二级缓存失效的原因

        2.1:下面这篇博客个人觉得已经总结的很全面了,传送门:

                转载:https://www.cnblogs.com/DoubleEggs/p/6243223.html

        2.2:补充一个比较简单但有时候比较容易忽略的场景(亲身经历):

                 自己写了一个工具类,来获取sqlSession,但是每次获取sqlSession的时候,都会重新加载mybatis全局配置文件,创建一个新的sqlSessionFactory,sqlSessionFactory不同自然也会导致二级缓存失效:

                Mybatis二级缓存失效及二级缓存使用简介_第2张图片

 

 

 

 

你可能感兴趣的:(mybatis)