栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Mybatis的缓存机制——高频率面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis的缓存机制——高频率面试题

Mybatis的缓存机制

缓存(Cache):将原本需要查询的数据暂时存储到其它更易于读取的位置,并且,在后续查询数据时,从新的位置获取数据。

例如:通常查询数据是从数据库(例如MySQL等)位置进行查询,但是,MySQL的查询数据的效率其实很低!使用缓存的做法,可以是将前序的查询结果保存下来(不销毁),当下次再次查询同样的数据时,直接将此前保存下来的结果返回出去即可!

提示:关于将前序的查询结果保存下来,可以保存到应用服务器上,也可以保存在其它能够高效获取数据的位置。

Mybatis框架内置了缓存机制,分别是一级缓存(L1 Cache)和二级缓存(L2 Cache)。

**关于一级缓存:**通常也称之为Session缓存,或会话缓存,它是基于Mybatis的Session机制的,是默认开启的,人为不可控。

一级缓存的特点:必须是同一个会话(SqlSession)、同一个Mapper、执行同样的查询、查询的参数相同,则后续的查询会直接使用前序的查询结果,并不会反复执行查询!

一级缓存还有一些特点:如果更换SqlSession,则会重新查询,如果SqlSession关闭或调用了clearCache()方法,则缓存数据会清空,或者,此表的数据发生了任何写(增删改)操作,缓存数据也会清空!

**关于二级缓存:**通常也称之为namespace缓存,在Spring Boot整合Mybatis的项目中,默认是全局开启,但各namespace默认未开启的!

二级缓存的特点:无论是否同一会话,只要是同一个namespace中的多次查询,均可应用二级缓存,Mybatis在查询数据时,会先检查二级缓存,如果命中,将直接返回结果,如果未命中,则检查一级缓存,如果命中则返回结果,如果仍未命中,则连接数据库执行查询。

二级缓存的使用:需要在配置SQL的XML文件中添加节点,表示开启当前namespace的缓存。

如果同一个namespace执行了任何写操作,都会导致二级缓存数据被清空!

注意:使用二级缓存时,用于封装查询结果的类型必须实现Serializable接口,否则查询时将出现异常!

另外,一旦使用了,则当前namespace中所有的查询都是开启了二级缓存的,如果部分查询功能并不需要开启二级缓存,还可以在节点上配置useCache=“false”。

结论:无论是一级缓存,还是二级缓存,都会因为发生了写操作而自动清空,这种机制通常并不满足生产环境的需求,所以,一般不会使用Mybatis的缓存机制!

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号