`
wu_quanyin
  • 浏览: 208212 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

Hibernate---缓存机制一

阅读更多

一。 持久化层的缓存 的范围

缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为三类。

1:事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。在此范围下,缓存的介质是内存。事务 可以是数据库事务或者应用事务,每个事务都有独自的缓存,缓存内的数据通常采用相互关联的对象形式。

2:进程范围:缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周 期,进程结束时,缓存也就结束了生命周期。进程范围的缓存可能会存放大量的数据,所以存放的介质可以是内存或硬盘。缓存内的数据既可以是相互关联的对象形 式也可以是对象的松散数据形式。松散的对象数据形式有点类似于对象的序列化数据,但是对象分解为松散的算法比对象序列化的算法要求更快。

3:集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的 数据的一致性,缓存中的数据通常采用对象的松散数据形式。

持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应的数据,还可以到进程范围或集群范围的缓存内查询,如果还是没有查 到,那么只有到数据库中查询。事务范围的缓存是持久化层的第一级缓存,通常它是必需的;进程范围或集群范围的缓存是持久化层的第二级缓存,通常是可选的。

 二。持 久化层的缓存的并发访问策略
当多个并发的事务同时访问持久化层的缓存的相同数据时,会引起并发问题,必须采用必要的事务隔离措施。
在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题。因此可以设定以下四种类型的并发访问策略,每一种策略对应一种事务隔离级别。
1: 事务型(Transactional)策略:仅仅在受管理环境中适用。它提供了Repeatable Read事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。
2: 读写型(read-write)策略:提供了Read Committed事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。
3: 非严格读写型(nonstrict-read-write)策略:不保证缓存与数据库中数据的一致性。如果存在两个事务同时访问缓存中相 同数据的可能,必须为该数据配置一个很短的数据过期时间,从而尽量避免脏读。对于极少被修改,并且允许偶尔脏读的数据,可以采用这种并发访问策略。
4) 只读型策略(read-only):对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。
事务型并发访问策略是事务隔离级别最高,只读型的隔离级别最低。事务隔离级别越高,并发性能就越低。
分享到:
评论
4 楼 wu_quanyin 2010-03-29  
scholers 写道
缓存中为啥要事物呢?不是很明白
所有的缓存数据都存在内存中,那么只有读的问题。全部都读。如果是单一的SERVER,就不会有缓存同步问题。
如果是集群,就要考虑缓存同步问题。

Hibernate 中Session 和SessionFactory ,Session属于事务的我们可不考虑并发,但是SessionFacotry我们就要考虑了..
3 楼 scholers 2010-03-29  
缓存中为啥要事物呢?不是很明白
所有的缓存数据都存在内存中,那么只有读的问题。全部都读。如果是单一的SERVER,就不会有缓存同步问题。
如果是集群,就要考虑缓存同步问题。
2 楼 jarson 2010-03-29  
不错!支持一下
1 楼 putonyuer 2010-03-29  
在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式。
===============

这个  好像一级缓存不能实现吧!

相关推荐

    hibernate-release-5.2.10

    6. **缓存**:Hibernate内置了二级缓存机制,可以通过配置使用如Ehcache这样的缓存提供者,提高性能。 7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@...

    hibernate-core 核心jar包

    9. **缓存机制**:Hibernate有两层缓存,第一层是Session级别的缓存,称为一级缓存;第二层是可选的,可以配置为使用第三方缓存服务,如Ehcache,称为二级缓存。缓存可以显著提升数据访问速度。 10. **事件和监听器...

    hibernate-core-5.0.11.Final.jar

    本文将重点探讨`hibernate-core-5.0.11.Final.jar`的核心源码,帮助读者深入理解其内部机制,并提供实用的应用指导。 一、Hibernate Core概述 Hibernate Core是Hibernate框架的基础部分,它包含了ORM的核心功能,...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **缓存**: Hibernate的二级缓存可以显著提升性能,通过配置可以缓存查询结果和实体实例。 - **批处理**: 使用批处理更新和插入,可以减少数据库交互次数,提高效率。 - **连接池**: 配置合适的连接池,如...

    hibernate-release-5.0.0.Final(1).zip

    - 利用缓存机制提高数据访问速度,如一级缓存(Session级)和二级缓存(SessionFactory级)。 五、最佳实践 1. 合理设计实体类:遵循单一职责原则,避免实体类过于庞大,提高代码可维护性。 2. 选择合适的映射策略...

    项目中使用 hibernate-memcached 做二级缓存

    总的来说,结合Hibernate的二级缓存机制和Memcached的分布式缓存能力,可以在项目中实现高效的数据缓存,提升系统的响应速度。同时,了解并掌握Memcached的基本原理和配置方法,对于提升系统架构的优化能力大有裨益...

    Hibernate-annotations-3.4最新版本

    在实际应用中,Hibernate-annotations-3.4.0.GA还包含了事务管理、缓存机制等功能。@Transactional注解可以标记一个方法为事务边界,而Hibernate的二级缓存通过@Cacheable和@Cache配置,可以提高查询性能,降低...

    hibernate-memcached-1.1.0-sources.zip

    传统的数据库缓存机制往往无法满足这样的需求,这时,分布式内存缓存系统如Memcached就显得尤为重要。本文将深入探讨如何将Hibernate与Memcached整合,以提高数据访问效率,并基于`hibernate-memcached-1.1.0-...

    hibernate-release-4.2.4.Final.zip

    10. **缓存机制**:Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的)以提高性能,减少对数据库的直接访问。此外,还可以集成第三方缓存服务如EHCache。 总之,Hibernate 4.2.4....

    hibernate-release-5.0.7.Final.zip

    这个版本支持Java 8,提供新的API设计,增强了对JPA 2.1规范的支持,并对缓存机制进行了优化。 2. Hibernate核心概念 - Session:它是与数据库交互的主要接口,负责持久化对象的创建、更新和删除。 - Transaction...

    hibernate-validator-5.2.4.Final.jar

    Hibernate Validator 5.2.4.Final 版本在性能上也有优化,例如缓存机制的改进,减少了重复的验证操作,提高了整体应用的运行效率。 六、API 及示例 例如,使用 @NotNull 注解来确保一个属性不为空: ```java ...

    hibernate-distribution-3.6.2 API及jar包

    此外,还可以利用Hibernate的二级缓存机制,如Ehcache,来优化性能。 总的来说,这个资源包为Java开发者提供了一套完整的Hibernate 3.6.2学习和开发工具,无论你是初学者还是经验丰富的开发者,都能从中受益。通过...

    hibernate-orm-master.zip

    3. **缓存策略**:Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的)。第一级缓存默认开启,提高性能;第二级缓存可选,可以跨会话共享,但需要额外配置。 4. **查询语言**:...

    hibernate-release-4.3.0.Beta2 lib

    Hibernate 是一个开源的 ORM 框架,它提供了一种规则化的映射机制,将 Java 类与数据库表进行对应,从而避免了繁琐的 SQL 代码编写。Hibernate 4.3.0 Beta2 是该框架的一个重要版本,引入了许多新特性和改进,提高...

    hibernate-extensions-2.1.3.zip ,middlegen for hibernate

    1. Hibernate扩展: Hibernate扩展是开发者社区为增加Hibernate功能而创建的一系列插件或工具。`hibernate-extensions-2.1.3.zip`可能包含了如以下的扩展: - Criteria查询增强:允许更复杂的动态查询构建,超越了...

    hibernate-distribution-3.3.2.GA-dist

    1. **实体管理**:Hibernate通过Entity类来表示数据库中的表,通过注解或XML配置文件进行映射,实现了对象与数据库记录之间的对应。 2. **会话接口**:Session是Hibernate的主要工作接口,用于执行CRUD(创建、读取...

    2.Hibernate-02-一级缓存详细教案1

    在这个教程中,我们将深入探讨Hibernate的一级缓存机制。 ### 1. Hibernate一级缓存 一级缓存是Hibernate内置的一种缓存策略,它是一个SessionFactory级别的缓存。当我们在Session中执行持久化操作时,Hibernate会...

    hibernate-3.3.2.GA-jar包集合

    10. **缓存机制**: - Hibernate提供了第一级缓存(Session级别)和第二级缓存(SessionFactory级别),以提高性能。还可以集成第三方缓存如 Ehcache。 11. **关联映射**: - Hibernate支持一对一、一对多、多对...

    hibernate-distribution-3.6.0

    1. **对象关系映射(ORM)**:Hibernate通过XML配置文件或注解,将Java类与数据库表进行映射,使得我们可以像操作普通Java对象一样操作数据库,减少了对SQL的直接依赖,提高了代码的可读性和可维护性。 2. **...

Global site tag (gtag.js) - Google Analytics