大家好,最近做的项目,打算用 hibernate 与其中的二级缓存,首先,项目背景如下:
业务上的很简单,说白了,是一个人力资源系统;
使用人数大约在2000人左右。
数据关系分为部门,用户,工作组,角色,资源(权限过滤用的)等。当然还有一些其它,不细说;
现在用hibernate 的二级缓存。但发现有不少的问题,其中最主要的问题就是脏数据的问题,可能是我用得不好,不过以下这个问题要如何处理?
资源中,分类别,类别分组,组中挂资源,如果我进行以下操作,会出现脏数据:
1. 通过类别,组,加载资源
2. 删除资源(直接删除,没通过类别中的set<组>,组中的set<资源>删除)
3. 再重复第一步操作
这时候就会出现脏数据,因为数据库中是已经删掉了,但缓存中类别,组中的set的数据还在!
上面只是提出一个具体问题进行讨论,这里主要不是要向大家提问这个具体问题,
而是想让大家发表对hibernate的二级缓存的看法,调查一下用hibernate二级缓存(包括查询缓存)的人多不多,还有最好是怎么去用,怎么去设计?也请各位指点一下,谢谢~
分享到:
相关推荐
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
在这个"hibernate二级缓存实例"中,我们将深入探讨二级缓存的原理、配置以及在实际项目中的应用。 首先,我们需要了解一级缓存和二级缓存的区别。一级缓存是Session级别的,每个Session都有自己的一级缓存,用于...
总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...
Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...
本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始。一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为...
**hibernate二级缓存详解** Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate...
以下是关于Hibernate二级缓存与Ehcache的详细知识点: 1. **二级缓存的作用**:一级缓存是每个Session内部的缓存,用于存储Session内的对象,而二级缓存则是一个全局范围的缓存,它可以在多个Session之间共享,减少...
当数据从数据库中加载时,Hibernate会尝试将这些对象放入二级缓存,后续的相同查询就可以直接从缓存中获取结果,避免了额外的数据库查询。这有助于提高性能,尤其是在处理重复查询时。 配置和选择二级缓存实现是...
`hibernate.cache.use_query_cache`和`hibernate.cache.use_second_level_cache`分别开启了查询缓存和二级缓存。最后,通过`class-cache`元素配置了`EntityClass`的缓存策略,这里使用了"read-write",表示读写操作...
**二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...
Hibernate 二级缓存
**Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...
二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...
在 Hibernate 中,二级缓存和查询缓存是提高应用性能的重要机制。下面将详细介绍如何开启并理解这两个缓存机制。 ### 1. 一级缓存与二级缓存 #### 1.1 一级缓存 一级缓存是 Hibernate 内置的 Session 缓存,它是每...
本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...
二级缓存的使用可以显著提升系统性能,特别是在频繁查询相同数据的情况下。然而,需要注意的是,虽然缓存可以提高效率,但也要考虑数据的一致性和并发控制问题,避免出现脏读、不可重复读等问题。因此,在实际应用中...
本篇文章将深入探讨Hibernate二级缓存的概念、工作原理以及如何在实际项目中设置和使用。 **一、二级缓存概念** 一级缓存是每个Hibernate Session内部的一个内存区域,用于存储Session期间的操作对象。当Session...