`

hibernate缓存机制

 
阅读更多

一、首先来了解什么是缓存?

     缓存是位于应用程序和物理数据源之间,用来临时存放数据的内存区域,目的是为了减少物理数据源和应用程序的访问次数,从而提高应用程序的运行性能。Hibernate的大多数查询在查询数据时,首先会到缓存中查找数据,如果找到就直接使用,如果没有找到才会去访问物理数据源,所以,把频繁使用的数据加载到缓存区中 ,就可以大大减少应用程序对物理数据源的访问,使得应用程序的性能打打提升。

 

二、Hibernate的缓存分类:

(1)、一级缓存(session级别的缓存):一级缓存的声明周期和session的声明周期一致,当前session一旦关闭,一级缓存就消失,因此一级缓存也叫session级别的缓存或事务级别的缓存。无论何时,当你给save()update()saveOrUpdate() 方法传递一个对象时,或使用load()get()list()iterate()scroll() 方法获得一个对象时,如果该对象在session缓存中不存在,该对象都将被加入到Session 的内部缓存中。

evit(Object obj)  将指定的持久化对象从一级缓存中清除,释放对象所占用的内存资源,指定对象从持久化状态变为脱管状态,从而成为游离对象。
clear()  将一级缓存中的所有持久化对象清除,释放其占用的内存资源。
contains(Object obj) 判断指定的对象是否存在于一级缓存中。
flush() 刷新一级缓存区的内容,使之与数据库数据保持同步。

CacheMode 参数用于控制具体的Session如何与二级缓存进行交互。

CacheMode.NORMAL - 从二级缓存中读、写数据。

CacheMode.GET - 从二级缓存中读取数据,仅在数据更新时对二级缓存写数据。

CacheMode.PUT - 仅向二级缓存写数据,但不从二级缓存中读数据。

CacheMode.REFRESH - 仅向二级缓存写数据,但不从二级缓存中读数据。通过 hibernate.cache.use_minimal_puts 的设置,强制二级缓存从数据库中读取数据,刷新缓存内容。

 

三、二级缓存(应用级别的缓存和sessionFactory级别的缓存):由多个事务也就是由多个session共享。

1、什么样的数据适合放到二级缓存中?

1)、不经常被修改的数据。2)、经常被访问。3)、数量有限的数据

2、常用的缓存插件 Hibernater二级缓存是一个插件,下面是几种常用的缓存插件:
1)、EhCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持。
2)、OSCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询缓存提供了支持。
3)、SwarmCache:可作为群集范围内的缓存,但不支持Hibernate的查询缓存。
4)、JBossCache:可作为群集范围内的缓存,支持事务型并发访问策略,对Hibernate的查询缓存提供了支持。

3、基于Ehcache第三方缓存框架的配置步骤:

1)、hibernate.cfg.xml配置用来打开二级缓存,在这里使用的是ehCache第三方扩展
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
2)、创建ehcache.xml文件,并加入ehcache依赖jar文件
3)、在需要放入二级缓存的类加入@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)配置,可以读写
4、什么查询可以读二级缓存?
load、get、iterator,而list的内容只会加入二级缓存,不会读取二级缓存。

 

四、查询缓存
查询缓存是缓存普通属性结果集的,对实体对象的结果集只缓存id,查询缓存的生命周期,当关联的表发生修改,那么查询缓存的生命周期结束
查询缓存的配置和使用:
1、在配置文件hibernate.cfg.xml中启用查询缓存,如:
<property name="hibernate.cache.use_query_cache">true</property>
2、在程序中必须手动启用查询缓存,如:
query.setCachable(true);

 

分享到:
评论

相关推荐

    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