mybatis教程之查询缓存(一级缓存二级缓存和整合ehcache)
MyBatis查询缓存(一级缓存、二级缓存和整合Ehcache) MyBatis框架提供了缓存机制,以提高查询效率和解决高并发系统的性能问题。缓存的意义在于将用户经常查询的数据放在缓存(内存)中,从而减少数据库的查询次数,提高查询效率。 MyBatis提供了两种类型的缓存:一级缓存和二级缓存。 一级缓存是SqlSession级别的缓存,sqlSession只能访问自己的一级缓存的数据。每次查询都先从缓存中查询,如果缓存中查询到则直接返回缓存数据,如果缓存中查询不到就从数据库查询,并将查询结果写入缓存中。如果两次中间出现commit操作(修改、添加、删除),本sqlSession中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询。 一级缓存的配置是MyBatis默认支持的,不需要配置。但是,需要注意的是,MyBatis和Spring整合后进行mapper代理开发,不支持一级缓存。 MyBatis的二级缓存是mapper级别的缓存,对于mapper级别的缓存不同的sqlSession是可以共享的。二级缓存的范围是mapper级别(mapper同一个命名空间),mapper以命名空间为单位创建缓存数据结构,结构是map<key、value>。每次查询先看是否开启二级缓存,如果开启从二级缓存的数据结构中取缓存数据,如果从二级缓存没有取到,再从一级缓存中找,如果一级缓存也没有,从数据库查询。 为了使用MyBatis的二级缓存,需要在核心配置文件SqlMapConfig.xml中加入<setting name="cacheEnabled" value="true"/〉,并在Mapper映射文件中添加一行:<cache />,表示此mapper开启二级缓存。此外,查询结果映射的pojo需要实现Java.io.serializable接口,以便进行序列化和反序列化。 MyBatis还支持与Ehcache的整合,以提供更强大的缓存功能。Ehcache是一个广泛使用的开源缓存框架,可以与MyBatis集成,以提供分布式缓存功能。 MyBatis的缓存机制可以有效地提高查询效率和解决高并发系统的性能问题,但需要正确地配置和使用缓存机制,以避免出现缓存不命中和脏数据的问题。
- 粉丝: 3
- 资源: 931
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助