Loading

Mybatis缓存

缓存:存在内存中的临时数据

           将用户经常查询的数据放在缓存中,用户去查询数据就不用从磁盘上查询,从缓存中查询,从而调高查询效率,解决了高并发系统的性能问题。

Mybatis的一级,二级缓存:

         1.一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。

         2.二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> ;

         3.对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear

 

MyBatis一级缓存原理以及失效情况?
缓存就是将用户经常查询到的数据放在缓存中,这样的话,下次用户再次去查询数据就不会去从磁盘上查询,从缓存中查询,提高了查询效率,解决了高并发系统的性能问题
一级缓存也叫本地缓存:一级缓存是默认打开的,每个SqlSession实例都拥有一个自己的本地缓存,如果创建一个新的SqlSession实例,则该实例拥有一个新的一级缓存。
失效情况:1.SqlSeesion不同
2.SqlSession相同,但查询条件不同
3.SqlSession对象相同,查询条件也相同,但两次查询之间执行了增删改操作
4.使用了ClearCache()方法

 

MyBatis二级缓存的使用?
工作机制:一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中,如果当前会话关闭了,这个会话对应的一级缓存就没了。但是我们想要的是,会话关闭了,一级缓存中的
数据就会放在二级缓存中,新的会话查询信息,就会在二级缓冲中获取内容。作用域在Namespace
使用步骤:1.让Mybatis框架支持二级缓存
2.让当前的映射文件支持二级缓存
3.让当前的操作支持二级缓存

posted @ 2022-03-25 23:29  远乡人  阅读(55)  评论(0编辑  收藏  举报