`

Hibernate之缓存同步策略

阅读更多

缓存同步决定了数据对象在缓存中的存取规则;为了使得缓存调度遵循正确的应用级事务隔离机制,必须为每个实体类指定相应的缓存同步策略;

Hibernate中提供4种内置的缓存同步策略;

  • read-only(只读缓存)

对于不会发生改变的数据,可使用只读型缓存;

<class name="com.keith" mutable="false">

    <cache usage="read-only"/>

    ....

</class>
 
  • nonstrict-read-write(非严格读/写)

程序的并发访问下的数据同步要求不是非常严格,且数据更新操作,频率较低,可采用本项;

  • read-write(严格的读/写)

基于时间戳判定机制,实现了“read committed” 事务隔离等级,可用于对数据库同步要求严格的情况,不支持分布式缓存;

<class name="com.keith" .... >

    <cache usage="read-write"/>

    ....

    <set name="kittens" ... >

        <cache usage="read-write"/>

        ....

    </set>

</class>
 
  • transactional(事务型缓存)

必须运行在JTA事务环境中;实现了Repeatable Read事务隔离等级,有效地保障数据的合法性,适用于关键数据的缓存;目前在Hibernate内置的的Cache中,只有JBoss Cache支持事务性的Cache实现;

 

在事务型缓存中,缓存的相关操作也被添加到事务之中(此时的缓存,类似于一个内存数据库),如果由于某些原因导致事务失败,将会连同缓冲池中的缓存数据一起回滚到事务开始之前的状态;

 

 

不同的缓存实现,可支持的缓存同步策略也各不相同;

 

Cache read-only nonstrict-read-write read-write transactional
Hashtable (not intended for production use) yes yes yes
EHCache yes yes yes
OSCache yes yes yes
SwarmCache yes yes
JBoss Cache 1.x yes yes
JBoss Cache 2 yes yes

 

分享到:
评论

相关推荐

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    NULL 博文链接:https://364232252.iteye.com/blog/2369161

    hibernate 3中的缓存小结

    当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象...

    Ehcache分布式缓存与其在SpringBoot应用

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。Ehcache 是一种广泛使用的开源 Java 分布式缓存。主要面向通用缓存,Java EE 和轻量级容器。它具有内存和...

    hibernate 教程

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    hibernate

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    hibernate总结

    Hibernate的检索策略: 1. 延迟检索(加载)映射文件中改变lazy a) Lazy的取值: i. Many-to-one 1. false 2. proxy 3. no-proxy ii. set 一对多 1. true  2. false  3. extra 根据对set容器的不同,可以产生...

    精通Hibernate:对象持久化技术第二版part3

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    Spring整合Ecache

    3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 5. 缓存数据会在虚拟机重启的过程中写入磁盘 6. 可以通过RMI、可插入API等方式进行分布式缓存 7. 具有缓存和缓存管理器的侦听接口 8. ...

    从J2SE到J2EE知识点介绍

    5. 线程同步 92 三. Jsp 101 (一) myeclipse上配置Tomcat服务器 101 (二) Jsp+servlet+bean版HelloWorld概览 105 (三) Jsp基本页面标签 116 1. 标签 116 2. contentType属性 118 3. pageEncoding属性 118 (四) form...

    Java常见面试题208道.docx

    121.说一下 hibernate 的缓存机制? 122.hibernate 对象有哪些状态? 123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么? 124.hibernate 实体类必须要有无参构造函数吗?为什么? 十三、Mybatis ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    Java面试宝典2020修订版V1.0.1.doc

    目录 ... 11 2、CSS样式定义优先级顺序是?...20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 23、什么是重量级?什么是轻量级? 95 24、谈谈Spring的IOC和DI

    Java学习笔记-个人整理的

    {4.12}集合的同步化}{89}{section.4.12} {4.13}集合转换为数组}{89}{section.4.13} {4.14}数组转换为集合}{89}{section.4.14} {4.15}Map的迭代}{90}{section.4.15} {4.15.1}字符统计}{91}{subsection.4.15.1} ...

    Spring 2.0 开发参考手册

    8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. 方便的变量 8.3.5. 示例 8.3.6. 运行集成测试 8.4. 更多资源 II. 中间层数据访问 9. 事务管理 9.1. 简介 9.2. 动机 9.3....

    spring chm文档

    8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. 方便的变量 8.3.5. 示例 8.3.6. 运行集成测试 8.4. 更多资源 II. 中间层数据访问 9. 事务管理 9.1. 简介 9.2. 动机 9.3....

    Spring-Reference_zh_CN(Spring中文参考手册)

    8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. 方便的变量 8.3.5. 示例 8.3.6. 运行集成测试 8.4. 更多资源 II. 中间层数据访问 9. 事务管理 9.1. 简介 9.2. 动机 9.3. 关键抽象 ...

Global site tag (gtag.js) - Google Analytics