`
bigkai_13
  • 浏览: 13421 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于HIBERNATE二级缓存(书上的)

阅读更多

  面试的时候,经常会被问到Hibernate,而Hibernate的缓存问题又是被问到最多,我想在这上吃亏的人并不少,那么我就总结一下有关Hibernate的问题,希望和大家交流一下

   

缓存(Cache),往往是提高系统性能的重要手段。对数据起到一个蓄水池和缓冲的的作用。缓存对于大量依赖数据读取操作的系统而言尤为重要,在大并发量的情况下,如果每次程序都需要向数据库直接做查询操作,所带来的性能开销显而易见。频繁的网络传输、数据库磁盘的读写操作,这些都大大降低了系统的整体性能。此时,如果能把数据在本地内存中保留一个镜像,下次访问时只需从内存中直接获取,那么显然可以带来显著的性能提升。引入缓存机制的难点是如何保证内存中数据的有效性,否则脏数据的出现将给系统带来难以预知的严重后果。虽然一个设计很好的应用程序不用缓存也可以表现出让人接受的性能,但毫无疑问,一些对读操作要求很高的应用程序可以通过缓存取得更高的性能。对于应用程序,缓存通过内存或磁盘保存了数据库的当前有关数据状态,它是一个存于当地的数据备份。缓存位于数据库和应用程序之间,从数据库更新数据,并给程序提供数据。

 

 

Hibernate的一级缓存是会话级缓存(Session-level),也就是常用到的Session,会话级缓存在给定的Session实例的生命周期内保存对象的实例。Session缓存类似于事务性缓存,只缓存给定的操作所需数据。二级缓存是应用级缓存(缓存服务).

 

                

 

Hibernate支持四种缓存服务,EHCache(Easy Hibernate Cache)是默认服务。要使用其他的缓存服务(二级缓存)需要在hibernate.cfg.xml中配置。例:

 

 

   <propertyname="hibernate.cache.provider_class">

      org.hibernate.cache.OSCacheProvider

   </property>

 

 

   Hibernate提供的缓存支持

 

     EHCache      (org.hibernate.cache.EhCacheProvider)

是一个简单,高效,使用简单的轻量级的缓存,它支持只读.读写.内存硬盘缓存。但并不支持分布式。     

             OSCache      (org.hibernate.cache.OSCacheProvider)

另一个开源缓存解决方案,他一是一个更大计划的一个部分,这个部分就是为JSP或者任意对象提供。像EHCache一样也是强大和灵活的包。它支持只读.读写.内存硬盘缓存。它也提供基本的JavaGroup或者JMS的集群支持

           SwarmCache    (org.hibernate.cache.SwarmCacheProvider)

一个简单的基于JavaGroups集群基本解决方案,他支持只读或者非严格读写。更多的用于读炒作。

            TreeCache      (org.hibernate.cache.TreeCacheProvider)

             JBOSS提供,一个强大的同步或非同步的事务缓存.

                            

缓存插件

transactional

read-write

nonstrict-read-write

read-only

EhCache

不支持

支持

支持

支持

SwarmCache

不支持

不支持

支持

支持

TreeCache

支持

不支持

不支持

支持

OSCache

不支持

支持

支持

支持

        

 

 

  

 

 

 

 

   缓存配置文件属性:

 

 

拷贝ehcache.xml文件到类路径下。ehcache.xml文件位于Hibernate安装目录etc下,拷贝这文件到项目工程的src目录下。

 

 

l <diskStore path=”java.io.tmpdir”/>:指定当把缓存中的数据写到硬盘上时,把数据写到这个项目上,”java.io.tmpdir”指定了java的一个临时目录,也可以使用自己定义的目录,如path=”C:\\temp”

l defaultCache是默认的Cache设置。

l <cache name=”sampleCache1”>name属性指定要使用缓存的类的完全路径名,或者要使用缓存的类的集合的完全路径名。例如要设定com.px1987.Course类使用第二级缓存,则可以设置name=” com.px1987.Course”

l maxElementsInMemory=”10000”:设定缓存中允许的最大的对象个数。

l eternal=”false”:如果为true,则缓存中的对象永不多期,并且会忽略timeToldleSeconds选项和timeToLiveSeconds选项。如果为false,将根据timeToldleSeconds选项和timeToLiveSeconds选项设置对象过期策略。

l timeToldleSeconds=”120”:从对象在缓存中的空闲状态超过120秒后过期。这个选项以秒为单位,当对象从最后一次访问到现在的时间超过了此处设定的值,对象将过期,并从缓存中被清除掉。如果设置为0则表示永不过期。只有设置eternal=”false”后,这个选项才会有效。

l timeToLiveSeconds=”120”:从对象放到缓存中起,对象在120秒后将被从缓存中清除。timeToLiveSeconds设定对象在缓存中存活的最长时间,可见timeToLiveSeconds需大于timeToldleSeconds

l overflowToDisk=”true”:当缓存中的对象个数超过maxElementsInMemory的上限后,溢出的对象将被写到磁盘。

 

 

 

       

      来源MANING出版的<<Hibernate 快速开发>>总结

 

 

分享到:
评论

相关推荐

    hibernate二级缓存实例

    在这个"hibernate二级缓存实例"中,我们将深入探讨二级缓存的原理、配置以及在实际项目中的应用。 首先,我们需要了解一级缓存和二级缓存的区别。一级缓存是Session级别的,每个Session都有自己的一级缓存,用于...

    hibernate一级缓存和二级缓存的区别与联系

    总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    hibernate二级缓存示例源码

    综上所述,通过学习`hibernate二级缓存示例源码`,我们可以了解到如何在实际项目中配置和使用Hibernate二级缓存,从而提升系统的性能。在实际应用中,应结合具体场景选择合适的缓存策略,以达到最佳的性能优化效果。

    hibernate二级缓存包

    以下是关于Hibernate二级缓存与Ehcache的详细知识点: 1. **二级缓存的作用**:一级缓存是每个Session内部的缓存,用于存储Session内的对象,而二级缓存则是一个全局范围的缓存,它可以在多个Session之间共享,减少...

    hibernate一级缓存、二级缓存和查询缓存

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    Hibernate 二级缓存

    Hibernate 二级缓存

    hibernate二级缓存

    Hibernate 二级缓存是一种高效的数据存储机制,它能够显著提升Web应用的性能,尤其是在处理大量数据流动时。缓存的主要目标是减少应用与数据库之间的交互次数,从而降低延迟并减轻数据库服务器的压力。在Hibernate...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...

    Hibernate一级缓存和二级缓存

    **二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...

    hibernate二级缓存java包下载

    二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...

    Hibernate 二级缓存 总结整理

    **Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...

    Spring集成的Hibernate配置二级缓存

    以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml &lt;property name="hibernate.cache.use_...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...

    为Spring集成的Hibernate配置二级缓存

    5. **实体类注解**:为了让Hibernate知道哪些实体类需要使用二级缓存,可以在实体类上添加`@Cacheable`注解,并指定缓存区域。例如: ```java @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public...

    hibernate二级缓存所需要的 jar包

    本篇将详细介绍Hibernate二级缓存的概念、作用以及所需jar包的作用。 一、Hibernate二级缓存概念 Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时...

    hibernate 二级缓存

    本篇文章将深入探讨Hibernate二级缓存的概念、工作原理以及如何在实际项目中设置和使用。 **一、二级缓存概念** 一级缓存是每个Hibernate Session内部的一个内存区域,用于存储Session期间的操作对象。当Session...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

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

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

Global site tag (gtag.js) - Google Analytics