`
120153216
  • 浏览: 61729 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Hibernate缓存清除

阅读更多
一、hibernate一级缓存
(1)hibernate支持两个级别的缓存,默认只支持一级缓存;
(2)每个Session内部自带一个一级缓存;
(3)某个Session被关闭时,其对应的一级缓存自动清除;
(4)save、update、saveOrupdate、load、get、list、iterate、lock方法都会向缓存中存对象.
(5)可以从缓存中读数据的只有: get、load、iterate
(6)Query对象默认情况下不读缓存,如果要使其支持缓存,则要通过语法:
query.setCacheable(true);
<property name="cache.use_query_cache">true</property>
(7)打开query缓存后,只有查询条件与以前的查询完全相同时,才会在缓存中匹配成功.
(8)Criteria对缓存支持不足;
(9)一级缓存不能控制缓存中的对象数量,要注意大批量操作数据时可能造成的内存溢出,可以利用清除缓存.
     session.clear()  清除缓存中所有对象
     session.evict(user) 清除指定对象


二、hibernate二级缓存
* save、update、saveOrupdate、load、get、list、query、Criteria方法都会填充二级缓存
* get、load、iterate会从二级缓存中取数据
* session.save(user)   如果user主键使用“native”生成,则不放入二级缓存.

(1)开启二级缓存
<property name="cache.use_second_level_cache">true</property>

(2)为hibernate指定二级缓存的实现类
<property name="cache.provider_class">
    org.hibernate.cache.OSCacheProvider
</property>

(3)为OSCache缓存创建配置文件(需要hibernate_Advance_Surpport_lib)
src/oscache.properties
修改配置中的:
cache.capacity=1000  指定缓存可以容纳多少对象


(4)指明哪些类需要放入二级缓存,需要长期使用到的对象才有必要放入二级缓存
<class-cache class="entity.PetInfo" usage="read-only" /> //不允许更新缓存中的对象
<class-cache class="entity.PetInfo" usage="read-write" />  //允许更新缓存中的对象

或在orm文件中:
<class name="entity.PetInfo" table="PetInfo" schema="dbo" catalog="epet">
   <cache usage="read-only"/>
   ...
</class>

(5)如果需要清除二级缓存,使用下面语法
    sessionFactory.evict(User.class)  清除所有user
    sessionFactory.evict(User.class,Id)  清除指定user

 

分享到:
评论

相关推荐

    Hibernate缓存深入详解 from ITEye

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

    Hibernate缓存技术研究

    ### Hibernate缓存技术研究 #### 一、引言 Hibernate是一种强大的对象-关系映射(Object-Relational Mapping,简称ORM)工具,主要用于Java环境下的应用程序。它能够将应用程序中的对象模型映射到关系型数据库的表...

    hibernate缓存机制

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

    Hibernate缓存,性能优化

    本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### Hibernate缓存原理 Hibernate缓存主要分为一级缓存和二级缓存。一级缓存,也称为会话缓存(Session Cache),是默认启用的,由Hibernate自动...

    Hibernate缓存深入详解

    【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...

    hibernate缓存

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

    Hibernate二级缓存+分页功能

    一级缓存的生命周期与Session相同,当Session关闭时,一级缓存中的数据也会被清除。 二级缓存则是SessionFactory级别的缓存,它可以跨Session共享数据,提供全局性的缓存服务。它分为进程内缓存(如EHCache)和...

    hibernate缓存的问题

    但若通过JDBC直接操作数据库,Hibernate无法感知这些变化,此时需要手动调用Cache的清除方法来确保数据一致性。二级缓存提供了按类清空、按类和主键id清空、清空集合中的缓存数据等方法。 N+1次查询问题是指在首次...

    使用Hibernate缓存数据.ppt

    《使用Hibernate缓存数据》 在Java开发中,Hibernate是一个广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作。为了提高性能,Hibernate引入了缓存机制,有效地减少了与数据库的交互次数,从而提升了...

    hibernate 缓存

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

    hibernate 缓存策略

    **hibernate缓存策略详解** Hibernate作为Java领域中广泛使用的ORM框架,其在处理大量数据时,为了提高性能和减少数据库的访问压力,引入了缓存机制。本文将深入探讨Hibernate的缓存策略,包括一级缓存、二级缓存...

    Hibernate缓存

    【Hibernate缓存详解】 Hibernate缓存机制是提升Hibernate性能的核心技术,它位于Hibernate应用程序与数据库之间,通过存储数据库数据的副本来减少对数据库的直接访问,从而显著提高系统的运行效率。缓存的主要目的...

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

    - **生命周期与Session一致**:一级缓存的生命周期跟随Session,当Session关闭时,一级缓存中的所有对象将会被清除。 - **自动管理**:Hibernate会自动管理一级缓存,无需开发者额外配置。 - **线程安全**:由于每个...

    Hibernate的缓存策略

    - **缓存清理**:对于一级缓存,在进行大量数据更新时,应适当调用`clear()`方法来释放内存资源,避免内存溢出的风险。 - **缓存配置**:对于二级缓存,合理的缓存配置至关重要。这包括选择合适的缓存插件、设置合理...

    Hibernate缓存机制,转载

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

    Hibernate缓存机制探讨

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

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

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

Global site tag (gtag.js) - Google Analytics