13.4 二级缓存
-
二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存
-
基于namespace级别的缓存,一个名称空间,对应一个二级缓存
-
工作机制
-
一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中
-
如果会话关闭了,这个会员对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中
-
新的会话查询信息,就可以从二级缓存中获取内容
-
不同的mapper查询出的数据会放在自己对应的缓存(map)中
-
一级缓存开启(SqlSession级别的缓存,也称为本地缓存)
-
二级缓存需要手动开启和配置,他是基于namespace级别的缓存。
-
为了提高可扩展性,MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来定义二级缓存。
步骤:
-
开启全局缓存
-
在Mapper.xml中使用缓存
-
测试
-
问题:我们需要将实体类序列化,否则就会报错
-
小结:
-
只要开启了二级缓存,在同一个Mapper下就有效
-
所有的数据都会放在一级缓存中
-
只有当前会话提交,或者关闭的时候,才会提交到二级缓存中
13.5 缓存原理
注意:
-
只有查询才有缓存,根据数据是否需要缓存(修改是否频繁选择是否开启)useCache=“true”
13.6 自定义缓存-ehcache
Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存
-
导包
-
在mapper中指定使用我们的ehcache缓存实现
__EOF__