mybatis原理 mybatis一级缓存和二级缓存
一、解释缓存
缓存是计算机内存中的一块区域,用于保存临时数据。在数据处理中,缓存尤其重要,因为它能显著提升程序的性能。
二、缓存的种类与使用场景
1. 一级缓存
介绍:这是sqlSession对象的本地缓存。
生命周期:与sqlSession一致。
适用性:主要存放sqlSession的临时数据。
2. 二级缓存
介绍:这是SqlSessionFactory级别的缓存,可以被多个SqlSession共享。
配置与使用:需要手动开启,并配置相应的dao映射文件。
三、代码示例与解析
- 代码示例(部分展示):
- @Test
- public void testFindAll() throws Exception { ... }
- 这里是测试MyBatis中缓存功能的代码片段。
- 通过多次执行findAll方法并关闭一级缓存,观察二级缓存的使用情况。
- 测试结果解析:
- 第一次查询后关闭一级缓存,再次查询时若二级缓存开启且数据未改变,则不会对数据库发出sql语句。
- 若关闭二级缓存,再次查询时会向数据库发出sql语句。
```
四、二级缓存使用小结
1. 开启二级缓存:确保在MyBatis配置中开启了二级缓存功能。
2. 配置二级缓存:在相应的dao映射文件中配置二级缓存。
3. Pojo类实现Serializable接口:使用二级缓存的Pojo类必须实现`Serializable`接口,以便于序列化和存储。
4. 共享与使用:二级缓存是SqlSessionFactory级别的,只要是同一个SqlSessionFactory创建的SqlSession都可以共享二级缓存的内容。
5. 关闭二级缓存:若在某些情况下不需要使用二级缓存,可以在相应的配置或代码中关闭它。
五、总结