首页 > 编程知识 正文

mybatis自定义缓存(mybatis缓存分为几种)

时间:2023-05-03 12:21:17 阅读:90100 作者:3536

博客负责人会就Java的面试问题写一系列文章,包括J2ee、SQL、主要的Web框架、中间件等面试过程中面试官经常会问的问题。 敬请关注。 一起学习,一起成长,文章底部有面试问题。

mybatis的一级缓存

mybatis的l1缓存以sqlsession为生命周期,多次执行相同的sql语句时,只需要首次连接到数据库查询,剩下的几次都可以从mybatis缓存中获取。

生命周期:明智的星月sqlsession消失,会话结束后缓存消失; 下次有能力的星月sql执行非sselect语句(add、delete、update、merge等)时,缓存也会直接全部清除以保证数据的完整性。 如果sqlsession调用了close方法,则缓存不可用; 调用clearCache方法时,缓存将为空。

缓存原理:大致是首先根据你的查询statementId参数信息mybatis自动生产key的值,再次查询时,将key的值在Cache中查找对应的value,如果有的话获取Cache中的value

如果没有,则查询数据库,并基于自动生成的密钥将已查询的值保存在缓存中。

mybatis的二级缓存

mybatis的二级高速缓存基于APP是生命周期。 范围由每个namepace的一个缓存保存和维护,同一namespace放置在一个缓存对象上,在此namaspace中运行时

下次有能力的星月sql执行非sselect语句(add、delete、update、merge等)时,将清除整个namespace的缓存。

假设Employee表中的数据在RoleMapper.xml中发生了更改,并且缓存可能不会立即更新。 因此,应尽量避免使用l2缓存。

图像源(3359 www.cn blogs.com /超文本标记/P/7739749.html ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

面试拓展:

昨天回顾

请写出mybatis的批量插入demo。

说一下mybatis和jpa的区别。

主要区别:

jpa是对象与对象之间的映射,mybatis是对象与结果集之间的映射。

jpa移植的性能很好,mybatis需要更改sql语句。

-------------

虽然写得不好,但是如果大家有更高的见解的话欢迎评论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。