1.一级缓存
2.二级缓存
缓存的意义
应用程序和数据库的交互的过程是一个相对比较耗时的过程,缓存是为了让应用程序减少对数据库的访问,提升程序运行效率
1.一级缓存(Session缓存)
1.1 Mybatis默认SqlSession缓存开启
1.1.1 同一个SqlSession 对象调用同一个<select>时,只有第一次访问
数据库,第一次之后把查询结果缓存到SqlSession 缓存区(内存)中
1.1.2 缓存的是statement对象(也就是一个<select>)
1.1.3 有效范围必须是同一个SqlSession对象
1.2 缓存流程
1.先去缓存区找是否存在statement
2.返回结果
3.如果没有缓存statement对象,就去数据库中获取数据
4.数据库返回查询结果
5.把查询结果放到对应的缓存区中
2.二级缓存(SqlSessionFactory缓存)
2.1 有效范围:同一个factory内的任意SqlSession
2.2 什么时候使用?
当数据频繁被使用,很少被修改
2.3 使用二级缓存的步骤
1.在mapper.xml中添加
<cache readOnly="true“></cache>
2.如果不写readOnly="true”
(含义:是否允许对二级缓存内容进行读取),则需要把实例类序列化:public class Log {···}
-->public class Log implements Serializable{···}