Hibernate的缓存处理

翻译 2006年05月18日 17:54:00

20.2.1. 缓存映射(Cache mappings)

类或者集合映射的“<cache>元素”可以有下列形式:

<cache 
    usage="transactional|read-write|nonstrict-read-write|read-only"  (1)
/>
(1)

usage说明了缓存的策略: transactionalread-writenonstrict-read-writeread-only

另外(首选?), 你可以在hibernate.cfg.xml中指定<class-cache><collection-cache> 元素。

这里的usage 属性指明了缓存并发策略(cache concurrency strategy)

20.2.2. 策略:只读缓存(Strategy: read only)

如果你的应用程序只需读取一个持久化类的实例,而无需对其修改, 那么就可以对其进行只读 缓存。这是最简单,也是实用性最好的方法。甚至在集群中,它也能完美地运作。

<class name="eg.Immutable" mutable="false">
    <cache usage="read-only"/>
    ....
</class>

20.2.3.  策略:读/写缓存(Strategy: read/write)

如果应用程序需要更新数据,那么使用读/写缓存 比较合适。 如果应用程序要求“序列化事务”的隔离级别(serializable transaction isolation level),那么就决不能使用这种缓存策略。 如果在JTA环境中使用缓存,你必须指定hibernate.transaction.manager_lookup_class属性的值, 通过它,Hibernate才能知道该应用程序中JTA的TransactionManager的具体策略。 在其它环境中,你必须保证在Session.close()、或Session.disconnect()调用前, 整个事务已经结束。 如果你想在集群环境中使用此策略,你必须保证底层的缓存实现支持锁定(locking)。Hibernate内置的缓存策略并不支持锁定功能。

<class name="eg.Cat" .... >
    <cache usage="read-write"/>
    ....
    <set name="kittens" ... >
        <cache usage="read-write"/>
        ....
    </set>
</class>

20.2.4.  策略:非严格读/写缓存(Strategy: nonstrict read/write)

如果应用程序只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离, 那么比较适合使用非严格读/写缓存策略。如果在JTA环境中使用该策略, 你必须为其指定hibernate.transaction.manager_lookup_class属性的值, 在其它环境中,你必须保证在Session.close()、或Session.disconnect()调用前, 整个事务已经结束

-------------------------------------------------------------------------
在jBPM 中使用不少这样的非严格读/写缓存的处理:
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

  <class name="org.jbpm.context.def.VariableAccess"
         table="JBPM_VARIABLEACCESS"
         lazy="false">
    <cache usage="nonstrict-read-write"/>
    <id name="id" column="ID_"><generator class="native" /></id>
   
    <property name="variableName" column="VARIABLENAME_" />
    <property name="access" column="ACCESS_" />
    <property name="mappedName" column="MAPPEDNAME_" />
  </class>

</hibernate-mapping>

它的ehcache.xml 是这样配置的:
<ehcache>
 <defaultCache
        maxElementsInMemory="100000"
        eternal="true"
        overflowToDisk="false"
        diskPersistent="false"
        />
</ehcache>

【框架】[Hibernate]多表操作与缓存技术

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 多表操作 关系型数据库具有三种常用关系:一对一关系、一对多关系和多对多关系。 ...
  • qq_26525215
  • qq_26525215
  • 2016年08月29日 14:24
  • 1994

Hibernate中的Collection cache(集合缓存)

Hibernate中设置了实体缓存,但是对于实体中的集合属性,默认也是不缓冲的。如果要缓存实体中的集合属性,则还需要对集合属性设置缓存。 对Entity类中的集合属性设置缓存后,如果集合属性中是数值...
  • taiyangdao
  • taiyangdao
  • 2016年07月28日 12:07
  • 1016

Hibernate查询和缓存

查询概述 (1)Get/laod主键查询 (2)对象导航查询 (3)HQL 查询,完全面向对象的查询(Hibernate Query Language 提供面向对象的查询语言) (4)Crit...
  • chenfengbao
  • chenfengbao
  • 2017年03月13日 17:36
  • 177

hibernate3缓存管理

Hibernate缓存管理                                                                        ++YONG原创,转载请注明1...
  • qjyong
  • qjyong
  • 2007年10月07日 21:22
  • 7658

Hibernate之缓存详解

一,缓存的概念 二,缓存的范围 三,Hibernate中的第一级缓存 1,get查询测试: 1>在同一个session中发出两次get查询 public void Query(){ Sessio...
  • an_2016
  • an_2016
  • 2016年08月03日 21:57
  • 21105

hibernate中flush()、refresh()、clear()缓存操作

flush():使数据库中的对象和session缓存中的对象的状态保持一致。为了保持一致,则可能发送对应的sql语句(若缓存中的对象和数据库中的对象一样则不发送sql语句)。 1、在transacti...
  • qq_27739989
  • qq_27739989
  • 2016年05月14日 19:44
  • 4092

Hibernate缓存以及哪些操作会向缓存中读取和存放数据

Hibernate常用方法中哪些会向缓存中存放数据以及读取缓存中的数据
  • Scaarf
  • Scaarf
  • 2017年05月12日 10:49
  • 1277

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

转载至:http://www.cnblogs.com/hcl22/p/6100191.html Hibernate中的三种状态     瞬时状态:刚创建的对象还没有被Session持久化、...
  • u010523770
  • u010523770
  • 2016年12月23日 19:54
  • 236

Hibernate缓存的作用

Hibernate缓存的作用 Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应...
  • huangbin10025
  • huangbin10025
  • 2014年06月11日 08:56
  • 1889

梳理hibernate篇-原理及缓存机制

Hibernate工作原理 现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力。当应用程序对于处于Session管理下的...
  • u014586894
  • u014586894
  • 2016年06月11日 00:52
  • 5221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate的缓存处理
举报原因:
原因补充:

(最多只允许输入30个字)