`

MyBatis一级缓存和二级缓存(转)

    博客分类:
  • ORM
 
阅读更多

作者:little飞 出处:http://www.cnblogs.com/little-fly/ 欢迎转载

 

 

一级缓存

  MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。

 

  MyBatis会在一次会话的表示 —— 一个SqlSession对象中创建一个本地缓存(local cache),对于每一次查询,都会尝试根据查询的条件去本地缓存中查找是否在缓存中,如果在缓存中,就直接从缓存中取出,然后返回给用户;否则,从数据库读取数据,将查询结果存入缓存并返回给用户。

 

  一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

 

  一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。MyBatis默认开启一级缓存。

 

二级缓存

  二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

 

  二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。MyBatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。


 

如果缓存中有数据就不用从数据库中获取,大大提高系统性能。

 

 

  • 大小: 46.6 KB
分享到:
评论

相关推荐

    深入理解MyBatis中的一级缓存与二级缓存

    下面我们将深入了解MyBatis中的一级缓存和二级缓存。 一级缓存 一级缓存是SqlSession级别的缓存。它是在操作数据库时构造的SqlSession对象中维护的一个数据结构,用于存储缓存数据。不同的SqlSession之间的缓存...

    mybatis一级缓存和二级缓存简单示例

    本文将深入讲解 MyBatis 的一级缓存和二级缓存,并通过一个简单的示例进行说明。 ### 一级缓存 一级缓存是 Session 级别的缓存,也称为本地缓存(Local Cache)。每当我们在一个 SqlSession 中执行了 CRUD 操作,...

    mybatis二级缓存学习

    总结,MyBatis二级缓存是一项实用的性能优化技术,但使用时需注意其工作原理和潜在的问题,合理配置和管理才能发挥最大效能。通过理解和实践,我们可以更好地掌握这一工具,提高应用的运行效率。

    MyBatis缓存(一级缓存、二级缓存)

    缓存是MyBatis性能优化的重要手段,分为一级缓存和二级缓存。在这篇文章中,我们将深入探讨这两个级别的缓存机制及其工作原理。 **一级缓存** 一级缓存是SqlSession级别的缓存,也称为局部缓存。当你执行一个查询...

    springMybatis+redis三级缓存框架

    综上所述,"springMybatis+redis三级缓存框架"是一种有效的优化方案,它结合了MyBatis的二级缓存和Redis的分布式缓存能力,能够在保证系统响应速度的同时,降低数据库的负载,提升整体应用性能。在实际应用中,根据...

    Mybatis的以及缓存和二级缓存(案例).mhtml

    此文章是对Mybatis框架的一级缓存一级二级缓存的描述,包括他们的作用,案例,以及部分源码分析,对一级缓存以及二级缓存进行了详细的描述以及概括,还有如何使用等内容

    mybatis二级缓存

    标题中的“mybatis二级缓存”指的是MyBatis框架中的一个重要特性,它是MyBatis缓存机制的一部分,用于提升数据库查询效率。MyBatis一级缓存是SqlSession级别的,而二级缓存则是在整个Mapper配置范围内的全局缓存,...

    从0到1项目搭建-集成 Redis 配置MyBatis二级缓存

    基于 SpringBoot 从0搭建一个企业级开发项目,基于SpringBoot 的项目,并集成MyBatis-Plus、Redis、Druid、Logback ,并使用 Redis 配置 MyBatis 二级缓存。

    mybatis一二级缓存

    在 MyBatis 中,一级缓存和二级缓存是两个重要的性能优化手段,它们可以有效减少对数据库的访问,提高系统的响应速度。下面将详细阐述这两个缓存机制。 ### 一级缓存 一级缓存是 MyBatis 默认开启的本地会话缓存,...

    mybatis二级缓存扩展-与redis集成

    集成Redis作为二级缓存的优势在于,Redis是一款高效的内存数据结构存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合,适合用于缓存。此外,Redis支持主从复制和集群部署,能提供高可用性和数据持久...

    MyBatis 二级缓存 关联刷新实现

    MyBatis 二级缓存 关联刷新实现1、MyBatis缓存介绍2、二级缓存问题2.1、数据不一致问题验证2.2、问题处理思路3、关联缓存刷新实现 1、MyBatis缓存介绍  Mybatis提供对缓存的支持,但是在没有配置的默认情况下,它只...

    深入了解MyBatis二级缓存

    "深入了解MyBatis二级缓存...MyBatis二级缓存是一种强大的缓存机制,可以提高应用程序的性能和可扩展性。通过了解MyBatis二级缓存的工作原理、配置方法和使用场景,可以更好地使用MyBatis二级缓存提高应用程序的性能。

    MyBatis3开启二级缓存

    MyBatis的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的相同SQL语句不会重复执行,而是直接从缓存中获取结果。然而,一级缓存存在生命周期问题,当SqlSession关闭时,一级缓存就会...

    mybatis一级二级缓存流程图.drawio

    mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio

    mybatis-plus 缓存(二)

    作为一名 IT 行业大师,我将对 Mybatis-Plus 缓存机制进行详细的解释,帮助读者深入了解缓存的概念、Mybatis-Plus 缓存机制的工作原理、一级缓存和二级缓存的配置和使用、缓存的优点和缺点等。 缓存是什么? 缓存是...

    Mybatis-plus基于redis实现二级缓存过程解析

    Mybatis-plus基于Redis实现二级缓存过程解析 Mybatis-plus是一款基于Java语言的持久层框架,旨在简化数据库交互操作。然而,在高并发、高性能的应用场景中,数据库的查询操作可能会成为性能瓶颈。为了解决这个问题...

    深入了解MyBatis二级缓存共6页.pdf.zip

    本文将深入探讨MyBatis的二级缓存机制,旨在帮助开发者更好地理解和利用这一功能。 首先,我们需要了解什么是缓存。缓存是一种存储技术,用于暂时保存经常访问的数据,以便快速获取,减少对数据库的直接访问,从而...

    MyBatis-05 缓存机制

    本篇文章将详细探讨MyBatis的缓存机制,包括一级缓存和二级缓存,以及如何将MyBatis与第三方缓存EhCache进行整合。 首先,我们来了解一级缓存。一级缓存是SqlSession级别的,也称为本地缓存。当我们在一个...

    mybatis+redis缓存配置

    MyBatis提供了两种级别的缓存支持:一级缓存和二级缓存。 - **一级缓存**:也称为本地会话缓存,它的生命周期是伴随着一次会话(SqlSession)的开始和结束。一级缓存默认开启且无法关闭,主要用于减少同一个会话内...

    mybatis+redis实现二级缓存

    在本项目中,“mybatis+redis实现二级缓存”是一个巧妙结合了MyBatis持久层框架与Redis内存数据库来优化数据访问速度的实践案例。下面将详细介绍这个项目中的关键技术点以及实现步骤。 首先,MyBatis是一个轻量级的...

Global site tag (gtag.js) - Google Analytics