`
zisefeiniao
  • 浏览: 172433 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate 的二级缓存技术

阅读更多
Hibernate的缓存分为两个级别:

一级缓存:指的是Session的缓存,所有使用同一个Session通过get或load查询的数据,都会保存在缓存中,下次再查询时,先从缓存中查找,如果找到,则不会再查询数据库,当Session关闭时,自动销毁。一般开发中不会使用,因为Session需要关闭。



二级缓存:保存在SessionFactory中,因此可以多个Session共同使用,二级缓存需要第三方的支持。可以使用oscache、ehcache之类缓存支持。默认Hibernate中加入的为ehcache缓存,这些缓存数据在一定时间后或SessionFactory销毁时自动销毁。



一、在hibernate.cfg.xml中配置使用二级缓存
1、在hibernate.cfg.xml中配置使用二级缓存,配置缓存支持类

[img]image001.jpg [/img]


2、还需要配置使用缓存的设置

[img]image002.jpg [/img]


3、配置使用二级缓存

[img]image003.jpg [/img]






二、在需要使用缓存查询的映射文件中,加入使用缓存的配置
     <cache usage="read-only"/>

        <id name="id" type="java.lang.Integer">

            <column name="id" />

            <generator class="native" />

        </id>




其中usage表示使用缓存的模式,默认为read-only,可以使用以下4种,其中第4种已经不使用了:

read-only:缓存为只读,缓存中的数据不可以被修改,在数据查询要求不严格时使用,而且数据库数据改变的不多。

read-write:可以读写的,当数据库中数据修改时,同时对缓存中的数据进行修改,数据准确性很高,但如果频繁修改,性能相对比较低。

nonstrict-read-write:不严格的可读写模式,不是当数据库中数据修改就立刻修改缓存中的数据,而是一定时间后,对数据库和缓存进行比较,如果有数据不同,则进行数据同步。

transactional:事务处理的方式,但目前read-write已经支持了事务操作,因此该模式已经不使用了。



三、在src下加入ehcache.xml配置文件
需要在src下加入ehcache.xml配置文件,该文件可以在hibernate开发包hibernate-3.2\etc中查找到

<ehcache>



    <!-- 表示缓存文件所保存的临时路径,java.io.tmpdir表示JDK所临时保存文件的路径 -->

    <diskStore path="java.io.tmpdir"/>





    <!--

       以下为默认缓存配置,如果没有进行单独的配置,使用该配置进行缓存的保存:



        maxInMemory       - 设置内存中可以创建pojo数据的最大数量(针对一个pojo)

        eternal           - 设置缓存中的数据是否永久存在.如果为true,  当超过时间后,数据也不销毁.

        timeToIdleSeconds - 设置从缓存对象创建后经过多长时间自动销毁. 只有当eternal为false时才可以使用. 单位为秒

        timeToLiveSeconds - 设置缓存对象经过一次查询后,多长时间不再被查询后自动销毁(闲置时间).

        overflowToDisk    - 如果为true,则当数据数量超出范围后(InMemory中的范围)后,是否保存到硬盘上(保存的位置在上面的diskStore中定义).



        -->

    <defaultCache

        maxElementsInMemory="10000"

        eternal="false"

        timeToIdleSeconds="600"

        timeToLiveSeconds="120"

        overflowToDisk="true"

        />



    <!--

       也可以自定义某一个类所使用的设置

       name表示该类的包.类名

    -->

    <cache name="org.liky.pojo.Area"

        maxElementsInMemory="20000"

        eternal="false"

        timeToIdleSeconds="1200"

        timeToLiveSeconds="300"

        overflowToDisk="true"

        />





</ehcache>






四、修改实现类(使用二级缓存)
修改实现类,实现类中需要为query或criteria设置打开缓存查询属性

    public List<Area> findAll() throws Exception {

       // TODO Auto-generated method stub

       Criteria c = this.instance.getConnnection().createCriteria(Area.class);

       // 设置使用缓存

       c.setCacheable(true);

       return c.list();

    }




五、测试说明
缓存只能在对单个类操作时使用,如果使用了级联查询,则无法对缓存进行处理。


  • 大小: 17.5 KB
  • 大小: 16.3 KB
  • 大小: 16.4 KB
分享到:
评论
1 楼 ningzai 2009-05-31  
1、在hibernate.cfg.xml中配置使用二级缓存,配置缓存支持类 [img]image001.jpg [/img] 2、还需要配置使用缓存的设置 [img]image002.jpg [/img] 3、配置使用二级缓存 [img]image003.jpg [/img]


上面的几个图片都失效了,更新下吧!

相关推荐

    Hibernate二级缓存技术

    ### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...

    hibernate二级缓存实例

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

    Hibernate二级缓存

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

    hibernate二级缓存包

    Hibernate二级缓存是Java开发中使用Hibernate框架进行数据持久化时优化性能的一种重要技术。它在一级缓存(Session级别的缓存)的基础上,提供了一个全局的、跨会话的数据存储层,可以显著减少对数据库的访问,从而...

    Hibernate一级缓存和二级缓存

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

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

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

    hibernate开启二级缓存和查询缓存

    在 Hibernate 中,二级缓存和查询缓存是提高应用性能的重要机制。下面将详细介绍如何开启并理解这两个缓存机制。 ### 1. 一级缓存与二级缓存 #### 1.1 一级缓存 一级缓存是 Hibernate 内置的 Session 缓存,它是每...

    Hibernate二级缓存配置详解

    《Hibernate二级缓存配置详解》 在Java的持久化框架Hibernate中,缓存技术是提升系统性能的关键之一。本文将深入探讨Hibernate的二级缓存,包括其事务范围、进程范围和集群范围的配置,特别是关注进程范围内的...

    springmvc4+spring4+hibernate5.1.3+二级缓存ehcache+fastjson配置

    Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...

    hibernate二级缓存

    Hibernate二级缓存是Java开发中使用Hibernate框架时提高性能的重要机制。它是一种持久化层缓存,用于存储从数据库中加载的对象,以便后续请求可以快速访问这些数据,而无需每次都直接查询数据库。在大型应用程序中,...

    Hibernate二级缓存.doc

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

    Hibernate二级缓存(Ehcache)

    【标题】:“Hibernate二级缓存(Ehcache)” 【正文】: Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。然而,随着应用规模的扩大,性能优化变得至关重要,...

    Hibernate二级缓存的应用

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

    Hibernate-二级缓存总结 开发技术 - Java.zip

    阅读该文档将有助于深入理解并掌握Hibernate二级缓存的应用。 综上所述,Hibernate的二级缓存是提升Java应用程序性能的有效手段,但同时也需要谨慎对待,合理配置和使用,以防止可能带来的数据一致性问题。通过深入...

    Hibernate+ehcache二级缓存技术

    Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术

    Hibernate_二级缓存 实验心得,手册

    通过本次实验,不仅深入了解了Hibernate二级缓存的基本概念和工作原理,还掌握了如何通过配置来优化二级缓存的使用。实践证明,合理的缓存策略能够显著提升系统的性能表现。在实际开发过程中,还需要结合具体的应用...

    Hibernate一级缓存和二级缓存【内附二级缓存数据存储结构】

    本文将深入探讨Hibernate的一级缓存和二级缓存,以及二级缓存的数据存储结构。 首先,一级缓存是Hibernate默认提供的缓存,每个Session都有一个独立的一级缓存。当我们在操作数据库时,例如查询或更新记录,这些...

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

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

    day37 07-Hibernate二级缓存:查询缓存

    在IT行业中,数据库操作是...在给出的压缩包文件"hibernate3_day03"中,可能包含了与Hibernate二级缓存相关的代码示例、配置文件或者教程文档,进一步的学习和实践可以从这些资源入手,加深对二级缓存的理解和运用。

Global site tag (gtag.js) - Google Analytics