开发者代码

促销活动、技术干货、问题解答、技术讨论,学习,成长,分享,共建

mybatis一级缓存和二级缓存

2023-11-23 08:48:14 点击:125
mybatis一级缓存和二级缓存
MyBatis是一款非常常用的Java持久化框架,支持一级缓存和二级缓存,用于提高数据访问性能。下文将详细介绍MyBatis的一级缓存和二级缓存。


一级缓存: 一级缓存是指SqlSession级别的缓存,它默认是开启的。在同一个SqlSession中,如果执行相同的SQL语句,那么MyBatis会从缓存中获取数据,而不会再去查询数据库。这样可以显著提高查询性能。一级缓存是基于PerpetualCache实现,是一个HashMap。MyBatis将查询结果放入一级缓存中,该缓存的生命周期与SqlSession一致。一级缓存是在SqlSession中实现的,一旦SqlSession关闭,一级缓存就会被清空。


一级缓存的特点: 1. 一级缓存是默认开启的,且无法关闭。 2. 一级缓存是在同一个SqlSession内有效,不同的SqlSession之间无法共享缓存。 3. 当进行增删改操作时,会清空一级缓存。 4. 一级缓存是基于PerpetualCache实现的HashMap,使用LRU算法进行缓存的清理。


二级缓存: 二级缓存是指Mapper级别的缓存,是跨SqlSession的缓存。在不同的SqlSession中,如果执行相同的SQL语句,MyBatis会先从二级缓存中获取数据,如果二级缓存中不存在数据,才会去查询数据库。二级缓存默认是关闭的,需要手动开启。开启二级缓存之后,MyBatis会将查询结果缓存到二级缓存中,下次查询可以直接从二级缓存中获取数据,而不需要再次查询数据库。


二级缓存的特点: 1. 二级缓存是跨SqlSession的,可以在多个SqlSession、多个Mapper之间共享缓存。 2. 二级缓存的作用域是Mapper,因此不同的Mapper之间的缓存是相互独立的。 3. 默认情况下,二级缓存是关闭的,需要手动开启。 4. 二级缓存的实现需要通过配置文件来进行配置。 5. MyBatis的二级缓存是基于Cache接口实现的,可以自定义缓存实现类。


开启二级缓存的步骤: 1. 在MyBatis的配置文件中开启二级缓存: 2. 在需要使用二级缓存的Mapper接口中,添加@CacheNamespace注解。


二级缓存的使用注意事项: 1. 被缓存的对象必须是可序列化的。 2. 缓存的对象应遵循更新机制,即在更新数据时应同时更新缓存。 3. 对于需要频繁更新的数据,不适合使用二级缓存。


总结: MyBatis的一级缓存和二级缓存都是用于提高数据访问性能的。一级缓存是在SqlSession内进行缓存的,是默认开启的,一般情况下无需手动操作。二级缓存是跨SqlSession的,需要手动配置开启,可以在多个SqlSession、多个Mapper之间共享数据。在实际使用中,要根据业务场景合理使用两个级别的缓存,以提高应用程序的性能。
声明:免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。

相关新闻

  • 7x24

    在线售后支持

  • 10

    +

    10年互联网服务经验

  • 300

    +

    全国300余家服务机构

  • 70000

    +

    与70000余家企业客户携手

logo
祥云平台主营业务:品牌型网站建设,高端型网站建设, 外贸型网站建设,营销型网站建设,网站优化, 开发类网站,企业网络营销,搜索引擎推广,微信小程序, 企业邮箱,短视频运营等。

服务热线

400-007-8608

公司:

苏州祥云平台信息技术有限公司
苏州华企立方信息技术有限公司

地址:江苏省昆山市昆太路530号祥和国际大厦15-16层

返回顶部