知识点
- 本地缓存,基于PerpetualCache,本质是一个HashMap
- 一级缓存:作用域是session级别
- 二级缓存:作用域是namespace和mapper的作用域,不依赖于session
一级缓存
一级缓存:基于PerpetualCache的hashmap本地缓存,其存储作用域为session,当session进行flush或者colse之后,该session中的所有cache就将清空,默认打开一级缓存
二级缓存
二级缓存是基于namespace和mapper的作用域起作用,不依赖于session,默认也是采用PerpetualCache的hashmap
开启二级缓存
- 全局配置文件
- 映射文件:使用
<cache/>标签让当前mapper生效二级缓存
二级缓存注意事项
- 对于缓存数据更新机制,当一个作用域(一级缓存session/二级缓存namespace)进行了增删改操作后,默认该作用域下所有select中的缓存将被clear
- 二级缓存需要缓存的数据实现Serializable接口
- 只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中