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

请您先登录,才能继续操作

HIbernate 缓存机制

    博客分类:
  • Java
阅读更多
Cache主要是为了提高系统的性能的。HIbernate由于直接JDBC的一个方面就是因为它的缓冲机制。Hibernate有两级缓存。
第一级缓存就是事务级缓存。很重要也是必须的。这一级缓存的对象是在persistence context中缓存的持久化对象。这级缓存可以保证对应于数据库同一行的对象只有一个实例。因此不存在并发的问题。
第二级缓存是进程级别的缓存。这里缓存的对象为同一个session factory生成的所有persistence context共享。因为是多线程共享,所以存在并发的问题。同一个对象在不同的persistence context里也是不同的copy。基于并发的原因,只有那些经常被读取,而
很少被变更的对象才适合进入这一级缓存。所以,这一级缓存是可选的,并且可以配置到具体的class以及class里面的集合属性。

在配置hibernate缓存的时候有两步。第一步是并发策略,有四种:Transactional,Read-write,Nonstrict-read-write和Read-only。依次并发要求越来越松,性能也越来越好。要根据要缓存对象的特性选择。第二步是选择物理的cache-provider。通常是EHCache, OSCache还有JbossCache等。不同的provider也不一定支持全部的并发策略,要注意选择。根据不同的对象特性,在cache-provider的配置里,也要配置不同的缓冲策略,包括
缓存数量,要不要disk缓存,闲置丢出时间以及超时时间等等。

最为典型的可以被缓存的例子就是产品目录Category。产品目录一般记录比较少,很少修改,几周甚至几个月才可能被修改。这样的对象又经常被查看和检索。我们就需要将所有的Category记录缓存在二级缓存里面。并发策略可以用Nonstrict-read-write。

=====================================================
欢迎大家一起讨论,我会持续总结更新。。。
=====================================================

分享到:
评论
6 楼 mcdowell123 2011-03-02  
赞同楼上的观点..
5 楼 JackyCheng2007 2011-02-24  
landslide 写道
对于百万数据级的以查询为主的应用,lz认为并发与缓存的策略应该从哪方面考虑呢
:)


这个问题比较大,欢迎大家一起出主意。我的建议是要考虑:
既然是查询为主,如果更新很少的话,就可以采用并发策略可以选择Nonstrict-read-write或Read-only。provider可以用OSCache。对于不同的访问频率的对象,设置不同的超时请出。缓存还要充分考虑对内存的占用,内存总是不足的,要把那些数据量小,高度频繁访问,又影响整体性能的对象缓存在内存里面。注意一个系统的性能是由最慢的那个部分决定的。
4 楼 JackyCheng2007 2011-02-24  
liuxuejin 写道
lz先解释一下到底缓存缓存那些??


我在原文中更新了一些,看看是否有帮助。
3 楼 landslide 2011-02-24  
对于百万数据级的以查询为主的应用,lz认为并发与缓存的策略应该从哪方面考虑呢
:)
2 楼 liuxuejin 2011-02-24  
lz先解释一下到底缓存缓存那些??
1 楼 cljhyjs 2011-02-24  
good article

相关推荐

    hibernate缓存机制

    Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...

    Hibernate缓存机制

    h​i​b​e​r​n​a​t​e​缓​存​机​制​,​你​必​须​学​的​持​久​层​技​术​。

    hibernate缓存机制分析共17页.pdf.zip

    《Hibernate缓存机制详解》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。其缓存机制是优化性能的关键组成部分,它减少了对数据库的直接访问,提高了数据处理效率。本文...

    Hibernate缓存机制,转载

    **标题:“Hibernate缓存机制,转载”** **描述:**这篇博客主要探讨了Hibernate框架中的缓存机制,包括一级缓存和二级缓存的概念、工作原理以及如何在实际开发中应用。 **标签:“源码 工具”** **知识点详解:*...

    Hibernate缓存机制.txt

    Hibernate缓存机制.txt

    Hibernate缓存机制探讨.doc

    ### Hibernate缓存机制详解 #### 一、概述 Hibernate 是一款流行的 Java 持久层框架,它简化了 Java 应用程序与数据库交互的过程。然而,直接使用 JDBC 访问数据库存在一定的性能开销。为了提升性能,Hibernate ...

    Hibernate缓存机制解说

    ## Hibernate缓存机制详解 ### 一、缓存分类与管理 Hibernate提供了两种主要的缓存类型:一级缓存和二级缓存。 #### 1. 一级缓存 一级缓存也称为Session缓存,它在同一个Session中对数据的多次读取操作只需要一...

    HIBERNATE的缓存机制

    Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...

    Hibernate缓存机制探讨

    在配置Hibernate缓存时,需要明确哪些实体或查询结果应该缓存,并设置相应的缓存策略。例如,我们可以使用`@Cacheable`注解标记实体类,使用`@Cache`注解来定义缓存区域和策略。同时,对于查询结果的缓存,可以使用`...

    Hibernate缓存机制深入浅出

    Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。 其作用是减少访问数据库的频率,从而提高应用的运行性能

    hibernate 缓存机制

    Hibernate的缓存机制是优化应用程序性能的关键组成部分,它通过存储数据副本减少对数据库的直接访问,从而提升系统响应速度。缓存主要分为两类:一级缓存(Session缓存)和二级缓存。 一级缓存是Hibernate的核心...

    hibernate缓存

    ### Hibernate缓存机制及优化策略 #### 一、概述 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域被广泛应用于数据库操作。它提供了丰富的缓存机制来提高应用性能并降低数据库访问压力。本文将...

    Hibernate缓存,性能优化

    综上所述,Hibernate缓存机制是提升应用性能的重要手段,通过合理配置缓存策略、优化查询方式、管理数据库连接以及实施有效的监控和调优措施,可以显著提高Hibernate应用的运行效率和用户体验。然而,缓存的使用并非...

    Hibernate缓存深入详解

    Hibernate缓存机制是其性能优化的核心组成部分,对于提高应用程序的运行效率至关重要。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,通过存储数据库数据的副本来加速数据检索。 **1. Hibernate缓存...

    Hibernate缓存

    2. Hibernate缓存机制.doc:这个文档应该详细解释了Hibernate的一级和二级缓存机制,包括缓存的生命周期、更新策略(如脏检查和锁机制)以及缓存失效策略。 3. osCache.doc:可能深入介绍了Oscache的高级特性和最佳...

Global site tag (gtag.js) - Google Analytics