美文网首页
Mybatis(四) Mybatis缓存

Mybatis(四) Mybatis缓存

作者: 怪瘦Java | 来源:发表于2020-03-24 20:44 被阅读0次

4.1 Mybatis缓存概念

缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存,我们可以避免频繁的与数据进行交互,进而提高响应速度。

Mybatis 也提供了对缓存的支持,分为一级缓存和二级缓存,通过下图来理解:

  第一次查询是会打出查询日志,第二次不会,而且两次查出的user地址是同一个,证明了一级缓存开启了。

4.2.2 总结

第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到用户信息,将用户信息存储到一级缓存中

如果中间SqlSession去执行commit操作(执行插入、更新、删除),则会清空SqlSession中的一级缓存,这样做的目的是为了让缓存中存储的是最新的信息,避免脏读

第二次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,缓存中有,直接从缓存中获取用户信息。

注:二级缓存保存的是查询出来的数据,u2是底层重新生成的User;开启了二级缓存后,还需要将缓存的pojo实现Serializable接口,为了将缓存数据取出来执行反序列化操作,因为二级缓存数据存储介质多种多样,不一定只存在内存中,有可能存在硬盘中,如我们要再取出这个缓存的话,就要反序列化。

4.3.2 useCache和flushCache

useCache是用来设置二级缓存的,如果设置为false,则表示禁止二级缓存,每次执行这条语句的时候都是从数据库里面查询数据,默认是true

原文:https://www.cnblogs.com/benjaming0321/p/12546905.html

相关文章

网友评论

      本文标题:Mybatis(四) Mybatis缓存

      本文链接:https://www.haomeiwen.com/subject/udbayhtx.html