【框架篇12】Mybatis框架-一级、二级缓存

57 阅读1分钟

知识点

  • 本地缓存,基于PerpetualCache,本质是一个HashMap
  • 一级缓存:作用域是session级别
  • 二级缓存:作用域是namespace和mapper的作用域,不依赖于session

一级缓存

一级缓存:基于PerpetualCache的hashmap本地缓存,其存储作用域为session,当session进行flush或者colse之后,该session中的所有cache就将清空,默认打开一级缓存

image.png

二级缓存

二级缓存是基于namespace和mapper的作用域起作用,不依赖于session,默认也是采用PerpetualCache的hashmap

image.png

开启二级缓存

  • 全局配置文件

image.png image.png

  • 映射文件:使用<cache/>标签让当前mapper生效二级缓存 image.png

二级缓存注意事项

  • 对于缓存数据更新机制,当一个作用域(一级缓存session/二级缓存namespace)进行了增删改操作后,默认该作用域下所有select中的缓存将被clear
  • 二级缓存需要缓存的数据实现Serializable接口
  • 只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中