MyBatis是一个持久层框架,它提供了一级缓存和二级缓存来提高查询性能。

一级缓存是指在同一个SqlSession内部的缓存。当执行查询语句时,查询的结果会被缓存在一级缓存中。当再次执行相同的查询语句时,MyBatis会先从一级缓存中查找结果,如果找到了就直接返回,不再访问数据库。一级缓存是默认开启的,并且是线程私有的,每个SqlSession拥有自己独立的一级缓存。

二级缓存是指在同一个SqlSessionFactory内部的缓存。当执行查询语句时,查询的结果会被缓存在二级缓存中。当再次执行相同的查询语句时,MyBatis会先从二级缓存中查找结果,如果找到了就直接返回,不再访问数据库。二级缓存是跨SqlSession的,多个SqlSession可以共享同一个二级缓存。但是二级缓存的默认开启是需要手动配置的。

需要注意的是,一级缓存和二级缓存是独立的,互相不影响。二级缓存的更新策略是基于事务提交的,只有当事务提交后,才会将修改操作同步到二级缓存中。

在实际使用中,一级缓存的命中率比较高,并且可以通过手动清空缓存的方式来控制缓存的粒度。而二级缓存的命中率相对较低,但是可以跨SqlSession共享缓存,适用于多个SqlSession之间频繁的读取相同的数据

mybatis一级缓存二级缓存

原文地址: https://www.cveoy.top/t/topic/iKMt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录