`

hibernate的缓存详解

阅读更多

hibernate的缓存详解:

1  缓存的概念,以及用途

1) 缓存:(hibernate单独用来保存数据,开辟一块内存)

    缓存就是数据库中的数据在内存中的临时的容器,包含

    了数据库表中的数据,位于数据库和访问层之间

2)缓存优点: hibernate做查询的时候,首先去缓存中

    查询要找的数据,有直接使用,没有再发sql语句去数据库

    中真实查询

    把用户经常访问的数据,放入缓存当中,这样每次

    就不需要去数据库中访问这些常用信息,可以提高系统的

    性能。

 3)缓存的分类:

     a) 一级缓存

     b) 二级缓存

     c) 查询缓存

 

 

2  一级缓存

    1)内部结构:一级缓存的内部结构就是一个map<id,object>

    map的key就是id,map的value就是实体对象,该结构

    导致一级缓存不能缓存属性

    2)一级缓存的生命周期:

    一级缓存的生命周期与session有关,session创建并

    维护一级缓存,session关闭,一级缓存销毁

    3)hibernate中API使用缓存:

    a) 可以读写一级缓存的: get  , load,Iterate

    b) 可以写入一级缓存的: save ,list

    4)hibernate一级缓存无法禁用:

        5)一级缓存的管理:session管理一级缓存(把一级缓存

        数据清空clear)

 

3  二级缓存

    1)二级缓存也叫进程级缓存或SessionFactory级缓存,

    二级缓存可以让所有的session所共享

    2)二级缓存的生命周期跟SessionFactory一致,

    SessionFactory管理二级缓存

    3)二级缓存的结构是Hashtable,只能保持实体对象,

    不能保存属性,开发当中需要使用第3方提供的缓存组件

    4)ehcache.xml

    //在该二级缓存中,最多可以缓存对象的数量

     maxElementsInMemory="1000" 

    //缓存在二级缓存中的对象是否永远都有效,一般配置为false

            eternal="true"

          //"钝化":两次访问该二级缓存中对象的,间隔时间

            timeToIdleSeconds="120"

          //二级缓存中的对象从创建到消亡的时间  

            timeToLiveSeconds="120"

           //如果超过缓存的访问,可以写入到硬盘上的

           overflowToDisk="true"

        5)如何使用二级缓存

               a)导入第3方ehcache-1.2.3.jar

               b)导入ehcache.xml 配置文件,放入src目录下

               c)修改hibernate.cfg.xml

               (一)指明二级缓存的提供商

                   <!-- 指明二级缓存的提供商 -->

                    <property name="cache.provider_class">

                    org.hibernate.cache.EhCacheProvider

                    </property>

                (二)开启二级缓存

                <!-- 是否开启二级缓存,true开启二级缓存,false关闭二级缓存 -->

                <property name="cache.use_second_level_cache">true</property>

        d)指明那个对象放入二级缓存中

        <!-- 指定把那个对象放入二级缓存当中 -->

        <class-cache class="com.tarena.po.Student" usage="read-only"/>

    6) 使用二级缓存

    能够读写二级缓存: get  load  iterate

    能够写入而不能读取二级缓存: list

    7) 二级缓存的管理

        使用SessionFactory来管理我们的二级缓存

        首先修改HibernateUtil,添加获得SessionFactory的方法

        SessionFactory factory = HibernateUtil2.getSessionFactory();

        //factory.evict(Student.class, 1):去掉二级缓存中

        //id为1的student对象

        //factory.evict(Student.class,1);

        //factory.evict(Student.class):去掉二级缓存中所有的

        //student对象

 

4  查询缓存

    1)查询用来保存属性的,对实体对象的结果集只保存id

    2)查询缓存的生命周期,只有当前的表发生改变,查询

    缓存的生命周期结束

    3)如何使用查询缓存:

        a)修改hibernate.cfg.xml文件,开启查询缓存

        <!-- 是否开启查询缓存,true开启查询缓存,false关闭查询缓存 -->

        <property name="cache.use_query_cache">true</property>

        b)在Query对象中必须手动开启查询缓存

分享到:
评论

相关推荐

    Hibernate缓存详解

    **Hibernate缓存详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提高数据访问性能,Hibernate引入了缓存机制,它可以减少对数据库的直接访问,从而提升应用的...

    hibernate 缓存详解

    **hibernate 缓存详解** 在Java的持久化框架Hibernate中,缓存是一个至关重要的概念,它极大地提升了数据访问的效率。缓存分为一级缓存和二级缓存,每级缓存都有其特定的作用和优化策略。 1. **一级缓存(Session ...

    hibernate缓存详解

    hibernate 缓存 详解 一级缓存 二级缓存 应用

    Hibernate缓存详解[文].pdf

    Hibernate缓存机制是Java开发中使用Hibernate框架进行数据库操作时非常关键的一个部分,它能够显著提升应用程序的性能。本文将详细解析Hibernate的一级缓存和二级缓存。 **一级缓存** 一级缓存是SessionFactory创建...

    Hibernate缓存深入详解 from ITEye

    **Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...

    hibernate缓存深入详解.

    关于hibernate缓存的一个ppt课件,60+幻灯片,有需要的可以看一下

    Java Hibernate缓存深入详解

    Java Hibernate缓存深入详解

    Hibernate缓存深入详解

    Hibernate缓存深入详解

    Hibernate 缓存详解

    很好的资料,里面详细的介绍了Hibernate的各级缓存

    hibernate缓存深入详解

    hibernate缓存深入详解

    hibernate 缓存

    【Hibernate缓存详解】 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。其缓存机制是提升系统性能的关键所在。本篇将深入探讨Hibernate的缓存机制,包括一级缓存和二级...

Global site tag (gtag.js) - Google Analytics