zoukankan      html  css  js  c++  java
  • Mybatis二级缓存

    什么是二级缓存?

      一级缓存是在两次发送同一个SQL请求,第一次执行完,就把数据存储在sqlsession中,第二次是从缓存中取出的数据,也就是说前后就只执行了一次SQL语句。

    但每次SqlSession一关闭,一级缓存中的数据就消失。所以用到了二级缓存。

    所以从这个角度讲:能跨sqlSession的缓存为二级缓存!

    1、一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中。
    2、如果会话关闭,一级缓存中的数据会被保存到二级缓存中;新的会话查询信息,就可以参照二级缓存中。

    步骤:

      第一步:

      在mybatis配置文件中,

      开启全局二级缓存配置:<setting name="cacheEnabled" value="true"/>

      第二步:

      在xxxMapper.xml中配置二级缓存

      <cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024" type=""></cache>

        flushInterval设置的是刷新的时间,单位是毫秒。

        

        readOnly:是否只读,true/false
          true:只读缓存;mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。
            mybatis为了加快获取速度,直接就会将数据在缓存中的引用交给用户。不安全,速度快。
          false:非只读:mybatis觉得获取的数据可能会被修改。
            mybatis会利用序列化&反序列化的技术克隆一份。安全,速度慢。
        type:指定自定义缓存的全类名

        size:缓存的对象的数目,默认是1024个。

        eviction:达到缓存的极限,新进缓存对象的替换方式。

      第三步:

        将缓存的对象实现序列化接口。

      第四步:

        在第一次操作之后记得关闭sqlsession。只有在sqlsession关闭之后,才会把数据方法二级缓存空间。

  • 相关阅读:
    C++面向对象三大特性
    4G通信技术LTE介绍
    汉澳战斗檄文,跟着汉澳去战斗
    AdapterView及其子类之二:使用ListActivity及ArrayAdapter创建列表
    [置顶] Objective-C ,ios,iphone开发基础:protocol 协议(委托,代理)的声明
    C语言中几种类型所占字节数
    UART, SPI, IIC的详解及三者的区别和联系
    数学基础详解 2——概率论与数理统计
    1—机器学习简介
    Python基础(11)——反射、异常处理
  • 原文地址:https://www.cnblogs.com/xuesheng/p/7485079.html
Copyright © 2011-2022 走看看