MyBatis中的缓存1

1、应用程序和数据库交互的过程是一个相对比较耗时的过程

2、缓存存在的意义:让应用程序减少对数据库的访问,提升程序运行的xiaolv

3、MyBatis中默认SqlSession缓存开启

  3.1  同一个SqlSession对象调用同一个<select>时,只有第一次访问数据库,第一次之后把查询结果缓存到SqlSession缓存区(内存)中

  3.2 缓存的是statement对象,(简单记忆:必须是用一个<select>)

    3.2.1在Mybatis时 一个<select>对应一个statement对象

  3.3 有效范围必须是同一个SqlSession对象

4、缓存流程  (sqlsession)

  4.1  步骤一:先去缓存区中找是否存在statement

  4.2 步骤二:返回结果

  4.3 步骤三:如果没有缓存statement对象,去数据库获取数据

  4.4 步骤四:数据库返回查询结果

   4.5 步骤五:把查询结果放到对应的缓存区中

 

5、SqlSessionFactory缓存

  5.1 又叫:二级缓存

  5.2 有效范围:同一个factory 内哪个SqlSession都可以获取

  5.3 什么时候使用二级缓存:

    5.3.1 当数据频繁被使用,很少被修改

  5.4 使用二级缓存步骤

    5.4.1 在mapper.xml中添加

    5.4.2 如果不写readOnly="true" 需要把实体类序列化

1 <cache readOnly="true"></cache>

  5.5 当SqlSession对象close()时 或commit()时会把SqlSession缓存的数据刷(flush)到SqlSessionFactory缓存区中

好好学习,天天向上。 努力工作,给自己的和家人一个满意的答案。。。。
原文地址:https://www.cnblogs.com/axu521/p/10104546.html