2024年6月12日发(作者:)

mybatis一级缓存和二级缓存原理

MyBatis一级缓存和二级缓存是MyBatis框架提供的两种缓存

机制,用于提高数据读取性能。

一级缓存是指在MyBatis中SqlSession级别的缓存,它是默认

开启的。当SqlSession执行某个查询语句时,查询结果会被缓存到

一级缓存中。当再次执行同样的查询语句时,MyBatis会先从一级

缓存中查找结果,如果存在,则直接返回缓存中的结果,否则再去

数据库中查询。一级缓存的生命周期与SqlSession的生命周期一

致,只有在SqlSession关闭或清空缓存时才会失效。

二级缓存是指在MyBatis中全局范围的缓存,它是需要手动配

置的。当SqlSession执行某个查询语句时,查询结果会被缓存到二

级缓存中。当再次执行同样的查询语句时,MyBatis会先从二级缓

存中查找结果,如果存在,则直接返回缓存中的结果,否则再去数

据库中查询。二级缓存的生命周期与应用程序的生命周期一致,只

要应用程序没有关闭,二级缓存就会一直存在。

需要注意的是,一级缓存和二级缓存并不是完全相同的机制。

一级缓存是在SqlSession级别的缓存,而二级缓存是在全局范围的

缓存。一级缓存是默认开启的,而二级缓存需要手动配置。另外,

一级缓存只能用于同一个SqlSession中的查询,而二级缓存可以跨

SqlSession共享缓存。不过,由于二级缓存是全局缓存,所以需要

考虑并发访问的问题,仅在数据更新不频繁且数据量较小的情况下

才适用。

- 1 -

- 2 -