缓存机制
Mybatis在自己的框架中继承了缓存机制,如果查询的数据会在缓存中存放一份,当我们想要再次使用这个数据的时候,只需从缓存中加载即可,减少了IO的访问,同时CPU从缓存中获取数据比从内存中获取数据的速度要快
将数据存储在内存中,减少频繁的操作查询数据库,提高系统性能。
- 一级缓存,SqlSession级别的缓存
- 二级缓存,SqlSessionFactory级别的缓存
一级缓存
SqlSession级别的缓存,无需任何配置,框架自带
- 一级缓存中,不同的SqlSession对象操作同一接口时,不可相互访问,缓存不能共享
- 一级缓存中,SqlSession对象执行了增删改操作后,缓存会被清除掉
清除缓存操作:sqlSession.clearCache(); ——> 一级缓存会被清理掉
二级缓存
SqlSessionFactory级别的缓存,Mybatis框架中二级缓存默认为true,也就是默认开启的,
-
二级缓存中,不同的SqlSession对象操作同一接口时,可相互访问,缓存可以共享
-
执行增删改后二级缓存会被清除掉
使用步骤
- 指定指定使用的二级缓存的类型(两种方式)
- 框架自带:使用的时候需要在正在使用的mapper.xml中指定使用的二级缓存的类型
< cache type=“org.apache.ibatis.cache.impl.PerpetualCache”>< /cache> - 第三方插件:ehcache,redis
- 实体对象序列化:实现Serializable接口
注意:每一个sqlSession必须在使用结束后(close后),其他sqlSession才可以操作缓存区域的数据。