mybatis一级缓存和二级换存的作用和区别
时间: 2023-08-11 09:52:35 浏览: 97
深入理解MyBatis中的一级缓存与二级缓存
5星 · 资源好评率100%
MyBatis是一种持久层框架,在进行数据库操作时,为了提高效率,MyBatis会默认开启一级缓存和二级缓存。它们的作用和区别如下:
一级缓存:
一级缓存是指在同一个SqlSession中,对于同一条SQL语句所查询的结果会被缓存下来,当再次查询时会优先从缓存中获取数据,而不是再去数据库中查询。一级缓存的生命周期与SqlSession相同,也就是当SqlSession关闭时,一级缓存也会被清空。
二级缓存:
二级缓存是指在多个SqlSession间共享缓存。MyBatis底层使用了一个HashMap将缓存数据存储在内存中,当SqlSession执行查询操作时,会先从二级缓存中获取数据,如果没有命中缓存,则再去数据库中查询,并将查询结果存入缓存中。当其他的SqlSession执行同样的查询操作时,会从共享的二级缓存中获取数据。默认情况下,二级缓存是关闭的,需要手动开启。
二级缓存相比于一级缓存,其作用范围更广,可以在多个SqlSession之间共享缓存数据,从而大大提高数据查询的效率。但是,由于缓存共享,存在数据不一致的可能性,因此在使用二级缓存时需要注意缓存的更新机制和缓存的清空策略。
阅读全文