`

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

 

分享到:
评论

相关推荐

    hibernate 缓存策略

    **hibernate缓存策略详解** Hibernate作为Java领域中广泛使用的ORM框架,其在处理大量数据时,为了提高性能和减少数据库的访问压力,引入了缓存机制。本文将深入探讨Hibernate的缓存策略,包括一级缓存、二级缓存...

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

    本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...

    HIBERNATE的缓存机制

    Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...

    Hibernate缓存深入详解 from ITEye

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

    Hibernate缓存深入详解

    这需要通过网络通信机制保证各个节点间的缓存同步。 **5. 查询缓存** 除了对象缓存,Hibernate还提供了查询缓存。查询缓存会存储查询结果,避免了对相同查询的重复执行。当查询结果发生变化时,需要手动清理查询...

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

    Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...

    Hibernate缓存,性能优化

    综上所述,Hibernate缓存机制是提升应用性能的重要手段,通过合理配置缓存策略、优化查询方式、管理数据库连接以及实施有效的监控和调优措施,可以显著提高Hibernate应用的运行效率和用户体验。然而,缓存的使用并非...

    hibernate的缓存机制

    此外,缓存管理(如缓存更新、缓存同步、缓存清理)也需要额外的开销。 **配置与使用**: 在Hibernate中启用二级缓存,需要在配置文件(如hibernate.cfg.xml)中指定缓存提供者,并在实体类或映射文件上添加注解或...

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

    每当我们在Session中进行对象的CRUD(创建、读取、更新、删除)操作时,这些操作实际上并未立即同步到数据库,而是被暂时保存在一级缓存中。一级缓存的特点如下: - **生命周期与Session一致**:一级缓存的生命周期...

    Hibernate缓存详解

    - **缓存同步**:由于二级缓存可能导致数据不一致,因此需要正确配置缓存同步策略,确保多个事务之间的一致性。 - **缓存大小**:根据实际应用需求调整缓存大小,避免内存溢出。 - **缓存失效**:合理设置缓存过期...

    hibernate缓存机制

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

    hibernate缓存ehcache用法

    这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。缓存是一种存储技术,用于临时保存经常访问的数据,以减少对主存储器(如数据库)的...

    Java框架篇—hibernate之缓存机制_.docx

    **一、为何使用Hibernate缓存?** 1. **降低访问频率**:Hibernate频繁地与数据库交互,缓存可以减少这种交互,避免不必要的数据库读写。 2. **提升性能**:从缓存中读取数据比从数据库读取更快,因为内存访问比...

    Hibernate一级缓存和二级缓存

    2. **缓存同步**:数据库和缓存的数据同步是挑战,需要处理好缓存失效和更新的问题。 3. **性能优化**:不是所有的数据都适合缓存,需要评估成本和收益,避免缓存成为性能瓶颈。 **源码和工具** 在深入理解...

    hibernate二级缓存(包括注解方式)

    Hibernate缓存主要分为一级缓存和二级缓存。一级缓存是Session级别的,它是内建的,无需配置,对同一个Session内的对象进行多次读取时,直接从内存中获取,避免了重复的数据库查询。二级缓存是SessionFactory级别的...

    hibernate二级缓存包

    5. **缓存同步**:在多线程环境下,Ehcache提供了线程安全的访问机制,保证了并发环境下的数据一致性。在分布式环境中,通过Terracotta服务器,Ehcache可以实现跨节点的数据同步,形成分布式缓存。 6. **缓存更新**...

    hibernate的缓存机制和session对象的产生方式案例

    在Java的持久化框架Hibernate中,缓存机制和Session对象的管理是其高效运作的关键要素。本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是...

    hibernate二级缓存java包下载

    二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...

    hibernate二级缓存示例源码

    - 更新操作可能导致缓存中的数据过期,需要正确处理缓存同步,例如使用`@CacheEvict`注解进行缓存清理。 - 对于大对象或频繁更新的对象,二级缓存可能不是最佳选择,因为它们会占用大量内存并增加缓存管理的复杂性。...

    Spring集成的Hibernate配置二级缓存

    此外,对于大量并发操作的情况,还需考虑锁策略和缓存更新同步,以保证数据的一致性。 总之,合理利用Hibernate的二级缓存机制,结合Spring的管理能力,可以有效地提升Java应用的性能。通过优化缓存配置和策略,...

Global site tag (gtag.js) - Google Analytics