当前位置: 首页 > news >正文

大连 网站维护昆明网络推广公司

大连 网站维护,昆明网络推广公司,新乡做网站的公司,福州网络公司网站MyBatis 是目前 Java 开发中常用的一种 ORM#xff08;对象关系映射#xff09;框架#xff0c;它不仅简化了 SQL 语句的编写和管理#xff0c;还提供了强大的缓存机制#xff0c;用以提高数据库访问的性能。MyBatis 的缓存分为一级缓存和二级缓存#xff0c;分别应用于不…MyBatis 是目前 Java 开发中常用的一种 ORM对象关系映射框架它不仅简化了 SQL 语句的编写和管理还提供了强大的缓存机制用以提高数据库访问的性能。MyBatis 的缓存分为一级缓存和二级缓存分别应用于不同的层次和场景。在本文中我们将深入探讨 MyBatis 的缓存机制包括一级缓存、二级缓存的原理、工作机制及其在应用中的优势和注意事项。 目录 什么是 MyBatis 缓存一级缓存 一级缓存的实现原理一级缓存的作用范围 二级缓存 二级缓存的实现原理如何启用二级缓存 一级缓存与二级缓存的区别缓存的作用与限制MyBatis 缓存最佳实践小结 1. 什么是 MyBatis 缓存 在应用程序开发中数据库的查询通常是性能瓶颈之一。为了解决这一问题MyBatis 提供了 缓存机制将查询的结果保存到内存中后续相同的查询可以直接从缓存中获取从而减少对数据库的访问提升系统性能。 MyBatis 的缓存机制分为两级 一级缓存作用范围是SqlSession同一 SqlSession 内多次执行相同的查询会缓存结果。二级缓存作用范围是Mapper 映射级别同一个 Mapper 对象的多次查询可以共享缓存数据。 2. 一级缓存 2.1 一级缓存的实现原理 MyBatis 的一级缓存是默认开启的每个 SqlSession 都会有一个一级缓存。一级缓存的存储介质是 HashMap它存储了由 SQL 语句和查询参数生成的缓存键值对查询的结果会存储在 SqlSession 对象的缓存中。 例如在一次查询中当执行 SQL 语句时MyBatis 会先检查缓存中是否存在该查询的结果如果有则直接返回如果没有则执行查询并将结果缓存下来供后续使用。 2.2 一级缓存的作用范围 一级缓存的作用范围是 SqlSession 同一 SqlSession在同一个 SqlSession 中如果多次执行相同的查询相同的 SQL 和参数结果会从缓存中返回避免了多次访问数据库。不同的 SqlSession不同的 SqlSession 对象之间不共享一级缓存如果需要跨 SqlSession 共享缓存结果则需要启用二级缓存。 一级缓存会在以下情况下失效 执行 update、insert、delete 等操作修改了数据库中的数据。执行了 SqlSession 的 clearCache() 方法。当前 SqlSession 被关闭一级缓存也随之被销毁。 3. 二级缓存 3.1 二级缓存的实现原理 二级缓存的作用范围是Mapper 映射级别多个 SqlSession 可以共享同一个 Mapper 的二级缓存。它是通过将查询的结果持久化存储到内存中来实现的通常使用 HashMap 或其他第三方缓存框架如 EhCache、Redis作为存储介质。 二级缓存需要手动开启可以通过以下步骤启用 在 mybatis-config.xml 配置文件中开启全局的二级缓存支持settingssetting namecacheEnabled valuetrue/ /settings在需要启用二级缓存的 Mapper.xml 文件中添加 cache/ 标签mapper namespacecom.example.mapper.UserMappercache/!-- 其他的SQL映射 -- /mapper启用二级缓存后查询的结果会存储在 Mapper 的缓存区域中当其他 SqlSession 发起相同的查询时MyBatis 会优先从缓存中获取数据。 3.2 如何启用二级缓存 以下是二级缓存的使用示例 配置二级缓存 在对应的 Mapper.xml 文件中添加 cache/ 标签示例 mapper namespacecom.example.mapper.UserMappercache /select idgetUserById resultTypeUserSELECT * FROM users WHERE id #{id}/select /mapper二级缓存注意事项 只有在 SqlSession 被关闭后查询的数据才会被保存到二级缓存。二级缓存中的数据是全局共享的不同 SqlSession 都可以访问。为了保证数据的一致性update、insert、delete 等操作执行后会清空相关的缓存数据。 4. 一级缓存与二级缓存的区别 缓存作用范围 一级缓存作用范围是 SqlSession只在当前会话中有效。二级缓存作用范围是 Mapper 级别多个 SqlSession 可以共享。 生命周期 一级缓存随着 SqlSession 的生命周期结束而结束。二级缓存在 SqlSession 结束后数据会存入持久化缓存中并能被其他 SqlSession 共享。 默认启用状态 一级缓存默认开启。二级缓存默认关闭需要手动配置。 5. 缓存的作用与限制 5.1 缓存的作用 减少数据库访问通过缓存查询结果可以显著减少数据库的访问频率从而提高系统性能。提高数据访问速度由于缓存的数据存储在内存中读取速度比访问数据库要快得多。 5.2 缓存的限制 一致性问题当数据库中的数据发生变化时缓存中的数据可能会变得不一致因此需要设置合适的缓存失效机制。适用场景有限缓存适合那些读多写少的场景在频繁写操作的场景中缓存的更新会带来额外的性能消耗。 6. MyBatis 缓存最佳实践 确保数据的一致性在频繁写操作的场景中不推荐启用缓存。缓存可以带来读性能的提升但必须谨慎对待数据的一致性问题。合理设置缓存策略通过设置合适的失效时间和过期策略可以在保证性能的同时避免缓存带来的数据不一致问题。结合第三方缓存框架可以使用 Redis、EhCache 等第三方缓存框架来增强二级缓存的性能和管理能力。 7. 小结 MyBatis 的缓存机制为开发者提供了有效提高查询效率的工具。一级缓存默认开启作用范围是 SqlSession而 二级缓存需要手动配置作用范围是 Mapper。二级缓存使得不同的会话之间可以共享查询结果进一步减少数据库访问频率。 在实际开发中合理使用缓存机制可以显著提高应用的性能但需要注意数据的一致性问题特别是在涉及频繁的写操作时使用缓存必须非常谨慎。通过结合不同的缓存策略和第三方缓存框架开发者可以构建出更为高效和稳定的系统。 理解并应用 MyBatis 的缓存机制能够帮助开发人员在数据访问的性能和数据一致性之间找到良好的平衡点从而提高系统的整体性能。
http://www.hkea.cn/news/14458362/

相关文章:

  • 石家庄市住房和城乡建设局官方网站餐饮加盟网站建设案例
  • 门户网站建设对策及建议自己做的动画买给网站
  • 服装销售 网站建设论文装潢设计公司
  • 网站设计公司哪家好易语言可以做网站吗
  • 达内网站开发培训遵义做网站
  • 外观设计网站贵池区城乡与住房建设网站
  • 阿里手机网站开发框架广告公司名字 三个字
  • wordpress 做下载站店面布置效果图大全
  • 做app和网站哪个比较好用四会市城乡规划建设局网站
  • 潮州网站推广优化成都旅游攻略详细安排
  • 网站建设调查内容有哪些环境设计专业介绍
  • 怀柔高端网站建设深圳做企业网站公司
  • 移动网站和定制网站wordpress 金融 模板
  • 企业标识系统seo免费浏览网站
  • 烟台网站制作开发村志网站建设
  • p2p网站开发文档pta程序设计平台
  • 关于公司网站改版通知网页素材大宝库
  • 肇庆 网站建设 域联中国菲律宾足球历史战绩
  • 做网站按页面收费wordpress安装主题出错
  • 上海工信部网站wordpress常用标签
  • 网站建设合同下载第三方平台网站的建设规划
  • 萧山中兴建设有限公司网站网络营销案例视频
  • jsp做的网站代码物流网
  • 站长工具查询个人养老保险金
  • 安徽旅游在线网站建设app网站建设需要什么
  • 今天开始做女神免费网站wordpress怎么恢复到原来版本
  • 网站设计审美角度互联网推广公司是做什么的
  • 企业建设网站找网站公司吗wordpress添加缩略图
  • 长沙市建网站做家装的设计公司网站
  • 网站建设论文基础摘要百度云资源搜索引擎