Mybatis缓存机制,普通人与高手有何区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计917个文字,预计阅读时间需要4分钟。
一位工作了5年的程序员,在私信里不断向我诉苦。他说,他用了Mybatis这么久,怎么也算得上是精通Mybatis了吧。结果,在Mybatis这个面试题上栽了跟头!真的好好烦啊!好吧,我们今天就来聊聊这个话题。
普通人:一个工作了 5年的程序员,在私信里面不断向我诉苦。
他说,他用了Mybatis这么久,怎么滴也算是精通Mybatis了吧。
结果竟然在Mybatis这个面试题上翻车了! 真的好烦!
好吧,我们今天来看看“Mybatis里面的缓存机制”,普通人和高手的回答。
嗯。。。。。。。。。
高手:这个问题,有点复杂,我打算从几个方面来说明。
首先,Mybatis里面设计了二级缓存来提升数据的检索效率,避免每次数据的访问都需要去查询数据库。
一级缓存,是SqlSession级别的缓存,也叫本地缓存,因为每个用户在执行查询的时候都需要使用SqlSession来执行,
为了避免每次都去查数据库,Mybatis把查询出来的数据保存到SqlSession的本地缓存中,后续的SQL如果命中缓存,就可以直接从本地缓存读取了。
如果想要实现跨SqlSession级别的缓存?那么一级缓存就无法实现了,因此在Mybatis里面引入了二级缓存,就是当多个用户
在查询数据的时候,只有有任何一个SqlSession拿到了数据就会放入到二级缓存里面,其他的SqlSession就可以从二级缓存加载数据。
每个一级缓存的具体实现原理是:
在SqlSession 里面持有一个Executor,每个Executor中有一个LocalCache对象。
本文共计917个文字,预计阅读时间需要4分钟。
一位工作了5年的程序员,在私信里不断向我诉苦。他说,他用了Mybatis这么久,怎么也算得上是精通Mybatis了吧。结果,在Mybatis这个面试题上栽了跟头!真的好好烦啊!好吧,我们今天就来聊聊这个话题。
普通人:一个工作了 5年的程序员,在私信里面不断向我诉苦。
他说,他用了Mybatis这么久,怎么滴也算是精通Mybatis了吧。
结果竟然在Mybatis这个面试题上翻车了! 真的好烦!
好吧,我们今天来看看“Mybatis里面的缓存机制”,普通人和高手的回答。
嗯。。。。。。。。。
高手:这个问题,有点复杂,我打算从几个方面来说明。
首先,Mybatis里面设计了二级缓存来提升数据的检索效率,避免每次数据的访问都需要去查询数据库。
一级缓存,是SqlSession级别的缓存,也叫本地缓存,因为每个用户在执行查询的时候都需要使用SqlSession来执行,
为了避免每次都去查数据库,Mybatis把查询出来的数据保存到SqlSession的本地缓存中,后续的SQL如果命中缓存,就可以直接从本地缓存读取了。
如果想要实现跨SqlSession级别的缓存?那么一级缓存就无法实现了,因此在Mybatis里面引入了二级缓存,就是当多个用户
在查询数据的时候,只有有任何一个SqlSession拿到了数据就会放入到二级缓存里面,其他的SqlSession就可以从二级缓存加载数据。
每个一级缓存的具体实现原理是:
在SqlSession 里面持有一个Executor,每个Executor中有一个LocalCache对象。

