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关闭之后,才会把数据方法二级缓存空间。

  • 相关阅读:
    PAAS平台的web应用性能测试与分析
    thrift之TTransport层的分帧传输类TFramedTransport
    thrift之TTransport层的缓存传输类TBufferedTransport和缓冲基类TBufferBase
    thrift之TTransport层的堵塞的套接字I/O传输类TSocket
    ssh证书登录(实例详解)
    [转]个性化推荐技术的十大挑战
    Github上最全的APICloud开源前端框架效果盘点(转)
    api.connectionType 判断当前网络技术经验
    安卓苹果获取时间戳转成本地时间
    js获取网络图片的宽和高
  • 原文地址:https://www.cnblogs.com/xuesheng/p/7485079.html
Copyright © 2011-2022 走看看