MyBatis查询缓存机制详解:一级缓存和二级缓存
169 浏览量
更新于2024-09-02
收藏 253KB PDF 举报
mybatis查询缓存知识点
MyBatis查询缓存是MyBatis框架中的一种机制,用于提高查询效率和解决高并发系统的性能问题。缓存的意义在于将用户经常查询的数据放在缓存(内存)中,从而提高查询效率。
MyBatis提供了两种类型的缓存:一级缓存和二级缓存。
**一级缓存**
一级缓存是一个SqlSession级别的缓存,sqlSession只能访问自己的一级缓存的数据。缓存使用的数据结构是一个map<key,value>,key是hashcode+sql+sql输入参数+输出参数(sql的唯一标识),value是用户信息。
一级缓存的原理是:第一次发出一个查询sql,sql查询结果写入sqlsession的一级缓存中。同一个sqlsession再次发出相同的sql,就从缓存中取不走数据库。如果两次中间出现commit操作(修改、添加、删除),本sqlsession中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。
每次查询都先从缓存中查询:如果缓存中查询到则将缓存数据直接返回。如果缓存中查询不到就从数据库查询。
一级缓存的配置是MyBatis默认支持的,不需要额外配置。但是,需要注意的是,MyBatis和Spring整合后进行mapper代理开发,不支持一级缓存。
**二级缓存**
二级缓存是跨SqlSession的缓存,是mapper级别的缓存,对于mapper级别的缓存不同的sqlsession是可以共享的。
**Ehcache**
Ehcache是一个流行的缓存框架,可以与MyBatis集成,以提供更好的缓存性能。MyBatis提供了与Ehcache的集成,允许开发者使用Ehcache作为缓存提供商。
**缓存测试**
为了测试缓存的效果,可以使用Junit测试框架编写测试用例。例如,使用MyBatis的Mapper接口来测试一级缓存的效果。
MyBatis查询缓存机制可以提高查询效率和解决高并发系统的性能问题。开发者可以根据需要选择合适的缓存类型和配置,以满足不同的应用场景。
2016-04-05 上传
2016-02-01 上传
2015-01-14 上传
2022-06-19 上传
2017-11-26 上传
点击了解资源详情
点击了解资源详情
weixin_38714509
- 粉丝: 3
- 资源: 931
最新资源
- Java毕业设计项目:校园二手交易网站开发指南
- Blaseball Plus插件开发与构建教程
- Deno Express:模仿Node.js Express的Deno Web服务器解决方案
- coc-snippets: 强化coc.nvim代码片段体验
- Java面向对象编程语言特性解析与学生信息管理系统开发
- 掌握Java实现硬盘链接技术:LinkDisks深度解析
- 基于Springboot和Vue的Java网盘系统开发
- jMonkeyEngine3 SDK:Netbeans集成的3D应用开发利器
- Python家庭作业指南与实践技巧
- Java企业级Web项目实践指南
- Eureka注册中心与Go客户端使用指南
- TsinghuaNet客户端:跨平台校园网联网解决方案
- 掌握lazycsv:C++中高效解析CSV文件的单头库
- FSDAF遥感影像时空融合python实现教程
- Envato Markets分析工具扩展:监控销售与评论
- Kotlin实现NumPy绑定:提升数组数据处理性能