首页 > 其他 > 详细

Mybatis_24_Mybatis二级缓存

时间:2021-05-08 22:51:00      阅读:19      评论:0      收藏:0      [点我收藏+]

Mybatis二级缓存

 * 默认情况下只启用了本地会话缓存 即: 一级缓存, 它仅仅对一个会话中的数据进行缓存。

 * 全局缓存(二级缓存)是基于namespace的缓存,一个namespace对应着一个Mapper接口。不同的SqlSession对象可以读取同一个mapper的缓存数据。

 * 但是所有的缓存数据都会先放在一级缓存中,只要一级缓存关闭的时候,才会转存到二级缓存中。

 * 工作原理:

     - 一个会话查询了一条数据,那么该条数据就会放在当前会话的一级缓存中。

     - 如果当前会话结束,SqlSession关闭了,那么所对应的缓存也就失效了。

     - 但是因为开启了二级缓存,会将一级缓存中的数据存储到二级缓存中。
    
     - 不同Mapper所查询出的数据会存放在自己的缓存中(Map),每个Mapper都有自己的缓存空间,相对独立。



 * 如果开启全局范围的二级缓存,需要在Mapper.xml文件中进行配置。添加<cache/>标签。


 * <catch>标签的属性

   <cache

    eviction="FIFO"         :设置缓存清除策略     可用的清除策略有:见下文。
   
    flushInterval="60000"   :设置缓存自动刷新间隔时间

    size="512"              :最多可以存储512个引用

    readOnly="true"         : 设置是否只读

    />


 
* 可用的缓存清除策略有:

      - LRU – 最近最少使用:移除最长时间不被使用的对象。

      - FIFO – 先进先出:按对象进入缓存的顺序来移除它们。

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

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


* 开启全局缓存(二级缓存) 的步骤

   1. 在Mybatis核心配置文件Mybatis-config.xml中的<Settings>标签中设置缓存属性开启

      | cacheEnabled | 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true | false 。  默认为true

      <!--开启二级缓存-->
      <setting name="cacheEnabled" value="true"/>


    2. 在需要使用二级缓存的Mapper.xml中添加<catch>标签,并设置相关属性
     
         <cache
          eviction="FIFO"        
          flushInterval="60000"   
          size="512"              
          readOnly="true" />



* 手动清理缓存

     //手动清理缓存
      sqlSession.clearCache();

Mybatis_24_Mybatis二级缓存

原文:https://www.cnblogs.com/szqengr/p/14745911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!