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

    一级缓存

      查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。

    一.缓存的划分

    根据缓存区的作用域与生命周期课划分为:

      一级缓存(大配置文件setting节点name属性)

      二级缓存

    二.缓存说明

      MyBatis查询缓存的作用域是根据映射文件的namespace划分的,相同的namespacemapper查询数据放在同一个缓存区域。不同namespace下的数据互不干扰。

    无论是一级缓存还是二级缓存,都是按照namespace进行分别存放的。

      一级、二级缓存的不同之处在于,SqlSession一旦关闭,则SqlSession中的数据将不存在,即一级缓存就不复存在。而二级缓存的生命周期与整个应用同步,与SqlSession是否关闭无关。换句话说,一级缓存是在同一线程(同一SqlSession)间共享数据,而二级缓存是在不同线程(不同的SqlSession)间共享数据。

    三.一级缓存

    Mybatis-config.xml大配置文件中开启一级缓存

    <!--一级缓存-->
    <setting name="localCacheScope" value="STATEMENT"/>

    存在证明

      同一个会话(SqlSession)执行两次相同的SQL,观察控制台发送了几条SQL

     

      缓存的底层实现是一个MapMapkey是查询的依据,使用的ORM框架不同,查询依据也不同,Mybatis查询依据为SQLID+SQL语句,hibernate的为查询结果对象的ID

    四、一级缓存结论

    1. Mybatis框架天然集成一级缓存
    2. 一级缓存查询依据为SQLID+SQL语句
    3. 增删改会清空一级缓存

    二级缓存 

      配置二级缓存

    ①在Mybatis-config.xml大配置文件中开启二级缓存

    <!--二级缓存   默认为开启-->
    <setting name="cacheEnabled" value="TRUE"/>

    ②mapper小配置文件中,添加缓存标签<cache/>

     ③实体类实现Serializable(标志接口:没有任何方法)

     

     ④、测试

    关闭刷新缓存(关闭后不再执行SQL查询)

      在增删改对应小配置节点内,加入flushCache值为false

    增删改对缓存的影响:

      一级缓存在增删改情况下,无论是否提交事务(sqlSession.commit())都会重新执行数据库查询,清空数据

        二级缓存在增删改情况下,如果是提交事务则会清空缓存重新查询,如果不提交事务,则获取缓存数据

  • 相关阅读:
    老罗的OLLYMACHINE
    VGA寄存器一览表
    常用的I/O地址
    使用VESA示例
    打开A20
    Linux 2.2 Framebuffer Device Programming Tutorial
    Linux驱动
    基于Linux核心的汉字显示的尝试
    汉字的动态编码与显示方案
    AT&T语法(一)
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/11672101.html
Copyright © 2011-2022 走看看