`
java_beginner_liyun
  • 浏览: 74508 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

二级缓存分析

阅读更多

Hibernate的二级缓存
  如前所述,Hibernate提供了两级缓存,第一级是Session的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法比卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
  第二级缓存是一个可插拔的的缓存插件,它是由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此第二级缓存是进程范围或者集群范围的缓存。这个缓存中存放的对象的松散数据。第二级对象有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。缓存适配器用于把具体的缓存实现软件与Hibernate集成。第二级缓存是可选的,可以在每个类或每个集合的粒度上配置第二级缓存。
  Hibernate的二级缓存策略的一般过程如下:
  1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
  2) 把获得的所有数据对象根据ID放入到第二级缓存中。
  3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
  4) 删除、更新、增加数据的时候,同时更新缓存。

        什么样的数据适合存放到第二级缓存中?
  1、很少被修改的数据
  2、不是很重要的数据,允许出现偶尔并发的数据
  3、不会被并发访问的数据
  4、参考数据
  不适合存放到第二级缓存的数据?
  1、经常被修改的数据
  2、财务数据,绝对不允许出现并发
  3、与其他应用共享的数据。
  Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query缓存。
  Hibernate的Query缓存策略的过程如下:
  1) Hibernate首先根据这些信息组成一个Query Key,Query Key包括条件查询的请求一般信息:SQL, SQL需要的参数,记录范围(起始位置rowStart,最大记录个数maxRows),等。
  2) Hibernate根据这个Query Key到Query缓存中查找对应的结果列表。如果存在,那么返回这个结果列表;如果不存在,查询数据库,获取结果列表,把整个结果列表根据Query Key放入到Query缓存中。
  3) Query Key中的SQL涉及到一些表名,如果这些表的任何数据发生修改、删除、增加等操作,这些相关的Query Key都要从缓存中清空。

 

分享到:
评论

相关推荐

    hibernate二级缓存示例源码

    通过分析这些源码,我们可以更深入地理解Hibernate二级缓存的工作流程和实际应用。 ### 6. 注意事项 - 虽然二级缓存提高了效率,但过度依赖可能会导致数据一致性问题。因此,需要根据业务需求谨慎选择缓存策略。 -...

    一级缓存和二级缓存

    一级缓存(L1 Cache)和二级缓存(L2 Cache)是CPU内部的重要组成部分,它们位于主内存和CPU核心之间,扮演着数据快速访问的角色。本文将深入探讨这两个级别的缓存系统,以及它们在优化计算性能中的作用。 首先,一...

    图片二级缓存

    四、“图片二级缓存demo”分析 提供的"Chapter_12"可能包含了一个实现图片二级缓存的示例项目,其中包括了内存缓存和磁盘缓存的实现代码。这个demo可以帮助开发者理解如何在实际项目中集成和管理二级缓存。通过阅读...

    Hibernate4二级缓存实例(源码)

    **标题解析:**“Hibernate4二级缓存实例(源码)” 这个标题表明我们将探讨一个具体的应用示例,即如何在Hibernate4框架中实现实现二级缓存,并且提供了源码供参考。Hibernate是一个流行的Java对象关系映射(ORM)...

    MyBatis3开启二级缓存

    **MyBatis3开启二级缓存详解** 在Java Web开发中,MyBatis作为一个轻量级的持久层框架,以其灵活、高效的特性深受开发者喜爱。其中,缓存机制是提高应用性能的重要手段之一。本篇将详细介绍如何在MyBatis3中启用二...

    hibernate二级缓存(包括注解方式)

    https://zhaoshijie.iteye.com/blog/998230”虽然没有提供具体信息,但可以推断出这是一个完整的博客文章,其中详细阐述了关于Hibernate二级缓存的使用和实现,可能包括了配置、注解的使用以及实际案例分析。...

    基于redis的二级缓存

    在IT行业中,数据库缓存是提高系统性能的关键技术之一,而Redis作为一种高性能的键值存储系统,常被用作二级缓存。本文将深入探讨基于Redis实现的二级缓存机制,以及如何通过源码和工具来优化这一过程。 首先,我们...

    合理利用“二级缓存”技术 提高数据库整体性能

    【二级缓存技术在数据库性能优化中的应用】 二级缓存技术是提高数据库性能的一种有效策略,尤其在处理大数据量查询和高并发I/O操作时,能够显著缓解硬盘I/O瓶颈。这种技术通常被用于打破传统数据库系统中内存与硬盘...

    apache ignite实现mybatis二级缓存所需要的jar包

    在MyBatis中,二级缓存是提高数据库访问性能的重要手段,它可以将SQL查询结果存储在内存中,避免重复的数据库查询。将Apache Ignite集成到MyBatis中作为二级缓存的实现,能够显著提升系统的响应速度和并发能力。 ...

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

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

    带二级缓存和业务封装的SSH项目源码

    在这个"带二级缓存和业务封装的SSH项目源码"中,我们可以看到开发者在原有的SSH基础上进行了一些高级特性的实现,特别是二级缓存和业务逻辑的封装,这些都是提升系统性能和开发效率的关键。 **Struts2** 是MVC...

    android图片二级缓存的实现机制

    本文将深入探讨“Android图片二级缓存的实现机制”,并结合开源项目Android-Universal-Image-Loader(UIL)的源码进行分析。 ### 一、什么是图片二级缓存 二级缓存是Android图片加载库常用的一种优化策略,它通常...

    hibernate二级缓存

    `Hibernate二级缓存攻略.doc`可能是整个工程的指南,包括如何导入工程,运行测试用例,以及对一级缓存和二级缓存的观察分析。 项目中的`hb1101`可能是一个特定的配置文件或代码模块,用于演示如何在实际应用中设置...

    Hibernate二级缓存架包.rar

    通过上述分析,我们可以看出,Hibernate的二级缓存机制是提高应用性能的重要手段。正确配置和使用二级缓存,能够有效地减少数据库交互,提升系统的响应速度。"ehcache.xml"配置文件和"Hibernate二级缓存架包"提供了...

    BIOS中禁用二级缓存

    从给定的文件信息来看,主要关注点在于“BIOS中禁用二级缓存”的话题,但文件内容涉及多个IT领域的常见问题与解决方案,包括硬盘坏道修复、USB设备兼容性、激光头清洗、电源问题导致的重启、BIOS设置调整、移动PC...

    Hibernate二级缓存.doc

    ### Hibernate二级缓存详解 #### 一、概述与背景 Hibernate作为一款优秀的Java持久层框架,在提高开发效率的同时,也面临着性能优化的问题。缓存机制是解决这一问题的关键技术之一。Hibernate提供了两种缓存机制:...

    day37 03-Hibernate二级缓存:集合缓冲区特点

    标题中的“Hibernate二级缓存:集合缓冲区特点”是指在使用Hibernate进行数据库操作时,对二级缓存中集合数据管理的特性和优化策略。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的...

    Hibernate二级缓存的应用

    **标题:“Hibernate二级缓存的应用”** 在Java的持久化框架Hibernate中,一级缓存是默认存在的,每个Session都有自己的缓存,而二级缓存则是可选的,它跨越了多个Session,为整个SessionFactory提供数据共享。二级...

    Hibernat一级缓存(源码)

    3. 分布式缓存:在多节点环境中,可以考虑使用二级缓存(如 Ehcache 或 Infinispan)来实现跨节点的数据共享,提高系统性能。 总结: 一级缓存作为 Hibernate 的核心特性,极大地提高了数据访问效率。通过对源码的...

    用二级缓存加速你的Hibernate应用

    - 二级缓存则位于一级缓存之上,一级缓存中的对象在关闭Session之前,如果被多个Session共享,会晋升到二级缓存,这样其他Session就可以直接从二级缓存获取数据,避免了数据库查询。 2. **二级缓存配置** - 在...

Global site tag (gtag.js) - Google Analytics