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

Hibernate缓存(二)

阅读更多

四、缓存的管理

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

 
二级缓存的管理 :   
   evict(Class arg0, Serializable arg1)  
将某个类的指定 ID 的持久化对象从二级缓存中清除 , 释放对象所占用的资源 .

evictCollection(String arg0)   将指定类的所有持久化对象的指定集合从二级缓存中清除 , 释放其占用的内存资源 .

 

如何避免一次性大量的实体数据入库导致内存溢出
*
flush ,再 clear

如果数据量特别大,考虑采用 jdbc 实现,如果 jdbc 也不能满足要求,可以考虑采用数据库本身的特定导入工具

 

五、什么样的数据不适合放在二级缓存中来 ?
 
下面这几种情况就不适合 加载到二级缓存中 :
  1.
经常被修改的数据
  2.
绝对不允许出现并发访问的数据
  3.
与其他应用共享的数据
 
下面这己种情况合适 加载到二级缓存中 :
  1.
数据更新频率低
  2.
允许偶尔出现并发问题的非重要数据
  3.
不会被并发访问的数据
  4.
常量数据
  5.
不会被第三方修改的数据

 

六、二级缓存的配置

Hibernate 的二级缓存功能是靠配置二级缓存插件来实现的 ,Hibernate 为了集成这些插件 ,Hibernate 提供了 org.hibernate.cache.CacheProvider 借口 , 它充当缓存插件与 Hibernate 之间的适配器 .

常用的二级缓存插件
EHCache  org.hibernate.cache.EhCacheProvider
OSCache  org.hibernate.cache.OSCacheProvider
SwarmCahe  org.hibernate.cache.SwarmCacheProvider
JBossCache  org.hibernate.cache.TreeCacheProvider

 

设置 hibernate.cache.provider_class

我们这里用 ehcache ,如
hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider
由于这是 HIBERNATE 默认的 CACHE 提供者 , 所以无须做什么设置 .

只要在 src 中添加 ehcache 的配置文件 ehcache.xml:

<ehcache>

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

  

    <defaultCache   maxElementsInMemory="10000"   eternal="false"  timeToIdleSeconds="120"          timeToLiveSeconds="120"  overflowToDisk="true"   />   

  

    <cache name="goncha.hb.bean.Person"   maxElementsInMemory="10"       eternal="false"    

        timeToIdleSeconds="100"  timeToLiveSeconds="100"  overflowToDisk="false"   />     

      <cache name="goncha.hb.bean.Address"  maxElementsInMemory="10"     eternal="false"    

        timeToIdleSeconds="100"  timeToLiveSeconds="100"  overflowToDisk="false"    />     

</ehcache> 

分享到:
评论

相关推荐

    Hibernate缓存.doc

    Hibernate缓存.docHibernate缓存.doc

    Hibernate缓存深入详解 from ITEye

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

    Hibernate缓存技术研究

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

    Hibernate二级缓存

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

    Java Hibernate缓存深入详解

    Java Hibernate缓存深入详解

    Spring集成的Hibernate配置二级缓存

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

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

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

    hibernate缓存机制

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

    hibernate二级缓存实例

    在Java的持久化框架Hibernate中,二级缓存是提高数据访问效率的重要机制。它是一种全局共享的、跨会话的数据存储区域,旨在减少对数据库的直接访问,从而降低系统负载,提升性能。在这个"hibernate二级缓存实例"中,...

    Hibernate缓存,性能优化

    Hibernate缓存主要分为一级缓存和二级缓存。一级缓存,也称为会话缓存(Session Cache),是默认启用的,由Hibernate自动管理。它存储了当前会话期间加载的所有实体对象和关联的集合对象。当会话关闭时,一级缓存中...

    Hibernate缓存深入详解

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

    hibernate 二级缓存详解

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

    hibernate5.1二级缓存包

    二级缓存是相对于一级缓存(Session 缓存)而言的,一级缓存是每个 Hibernate Session 内部的缓存,而二级缓存则是在 SessionFactory 级别的,可以被多个 Session 共享。它能够存储对象的状态,避免频繁的数据库交互...

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

    2. **配置Hibernate**:在Hibernate的配置文件`hibernate.cfg.xml`中启用二级缓存并指定缓存提供商。以下是一个使用Ehcache的示例: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true ...

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

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

    Hibernate一级缓存和二级缓存

    描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的Hibernate缓存知识进行解释。 **一、Hibernate一级缓存** 一级缓存是每个Hibernate Session内的缓存,它是一...

    Hibernate缓存详解

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

    hibernate缓存深入详解.

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

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

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

Global site tag (gtag.js) - Google Analytics