四、缓存的管理
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>
分享到:
- 2009-10-26 10:54
- 浏览 1124
- 评论(0)
- 论坛回复 / 浏览 (0 / 1726)
- 查看更多
相关推荐
Hibernate缓存.docHibernate缓存.doc
**Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...
### Hibernate缓存技术研究 #### 一、引言 Hibernate是一种强大的对象-关系映射(Object-Relational Mapping,简称ORM)工具,主要用于Java环境下的应用程序。它能够将应用程序中的对象模型映射到关系型数据库的表...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
Java Hibernate缓存深入详解
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...
Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...
在Java的持久化框架Hibernate中,二级缓存是提高数据访问效率的重要机制。它是一种全局共享的、跨会话的数据存储区域,旨在减少对数据库的直接访问,从而降低系统负载,提升性能。在这个"hibernate二级缓存实例"中,...
Hibernate缓存主要分为一级缓存和二级缓存。一级缓存,也称为会话缓存(Session Cache),是默认启用的,由Hibernate自动管理。它存储了当前会话期间加载的所有实体对象和关联的集合对象。当会话关闭时,一级缓存中...
【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...
Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...
二级缓存是相对于一级缓存(Session 缓存)而言的,一级缓存是每个 Hibernate Session 内部的缓存,而二级缓存则是在 SessionFactory 级别的,可以被多个 Session 共享。它能够存储对象的状态,避免频繁的数据库交互...
2. **配置Hibernate**:在Hibernate的配置文件`hibernate.cfg.xml`中启用二级缓存并指定缓存提供商。以下是一个使用Ehcache的示例: ```xml <property name="hibernate.cache.use_second_level_cache">true ...
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的Hibernate缓存知识进行解释。 **一、Hibernate一级缓存** 一级缓存是每个Hibernate Session内的缓存,它是一...
**Hibernate缓存详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提高数据访问性能,Hibernate引入了缓存机制,它可以减少对数据库的直接访问,从而提升应用的...
关于hibernate缓存的一个ppt课件,60+幻灯片,有需要的可以看一下
在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...