`
xly_971223
  • 浏览: 1283953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate 一对多缓存的问题

阅读更多
原提问为
http://www.iteye.com/problems/6589
这里面最后给出了解决方案
但这个方案在最终实施的时候却出现了问题,插入新的Answer后却没有清除一对多上的缓存,导致查询出的还是老数据,知道缓存超时后才加载新的数据
尝试了CacheConcurrencyStrategy的所有级别 包括CacheConcurrencyStrategy.TRANSACTIONAL也是不行
由此可以推断一对多的缓存使用的实体的cache region
最后没办法只好去掉了Set上的@Cache
	@OneToMany(mappedBy="problem", cascade = { CascadeType.REMOVE })
	@OrderBy("right DESC, answerTime DESC")
	//@Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
	public Set<Answer> getAnswers() {
		return answers;
	}

这样每次查询是一次N+1查询,所幸的是N基本上都能命中

分享到:
评论

相关推荐

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

    缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存是 Hibernate 内置的,默认开启,与 Session 对象关联。它是一个事务范围的缓存,也就是说,每个...

    hibernate的一级缓存和二级缓存

    这意味着,对于同一个SessionFactory创建的多个Session,如果执行相同的查询,可以共享二级缓存中的数据,减少了对数据库的访问。二级缓存的实现通常由第三方插件提供,如Ehcache或Infinispan,Hibernate通过...

    hibernate一级缓存

    **hibernate一级缓存详解** 在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它为提高数据库操作效率、减少对数据库的访问提供了重要支持。一级缓存,也称为session缓存,是每个Hibernate Session内部...

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

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    Hibernate一级缓存和二级缓存

    标题“Hibernate一级缓存和二级缓存”指的是Hibernate框架中的两种缓存机制,它们是提高数据访问性能的关键要素。一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用...

    hibernate一对多项目

    本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用中使用Hibernate处理一对多的关系映射。这里我们将深入探讨 Hibernate 的一对多关系、配置以及在实际项目中的应用。 首先,一对多关系在数据库中很常见,...

    hibernate5.1二级缓存包

    二级缓存是相对于一级缓存(Session 缓存)而言的,一级缓存是每个 Hibernate Session 内部的缓存,而二级缓存则是在 SessionFactory 级别的,可以被多个 Session 共享。它能够存储对象的状态,避免频繁的数据库交互...

    hibernate开启二级缓存和查询缓存

    一级缓存是 Hibernate 内置的 Session 缓存,它是每个 Hibernate Session 的私有缓存。当对象被加载到 Session 中时,它们会被自动缓存。在同一个 Session 内部,对相同数据库记录的操作会直接在缓存中进行,无需...

    Hibernate-二级缓存总结 开发技术 - Java.zip

    一级缓存是Hibernate内置的Session缓存,每个Session都有自己的缓存,用于存储实体对象,它可以避免频繁地与数据库进行交互,提高性能。然而,一级缓存的作用范围仅限于单个Session,当Session关闭时,其中的数据就...

    为Spring集成的Hibernate配置二级缓存

    一级缓存是每个Session内部的缓存,而二级缓存则是SessionFactory级别的,它可以被多个Session共享。二级缓存主要由第三方缓存提供者如Ehcache、Infinispan等实现,它们将数据存储在内存或磁盘中,以便于快速访问。 ...

    Hibernate的缓存策略

    例如,在多用户共享数据的应用场景中,使用二级缓存可以大幅减少对数据库的访问次数,从而提高系统的响应速度。 #### 六、缓存的管理与优化 在实际应用中,还需要注意对缓存的管理和优化: - **缓存清理**:对于...

    Hibernate4二级缓存实例(源码)

    1. **Hibernate二级缓存**:二级缓存是Hibernate在一级缓存(Session级别的缓存)之外提供的全局共享缓存,可以跨Session共享数据。它允许多个并发用户访问相同的数据,减少对数据库的访问次数,提高系统性能。 2. ...

    深入理解Hibernate缓存

    - **作用范围**:一级缓存仅对当前`Session`有效。 **示例代码**: ```java Session session = sessionFactory.openSession(); // 加载或保存实体对象 session.save(entity); session.close(); ``` 在此过程中,`...

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

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

    hibernate二级缓存实例

    总的来说,"hibernate二级缓存实例"是一个很好的学习资源,它可以帮助我们理解二级缓存的工作机制,掌握如何在项目中配置和使用,以及注意潜在的问题和优化策略。通过实践,我们可以更好地运用这一技术,提升Java...

    hibernate一对多与多对一

    本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...

    Hibernate缓存技术研究

    Hibernate的缓存机制分为两层:第一级缓存(Session缓存)和第二级缓存(SessionFactory缓存)。这两种缓存分别服务于不同的应用场景和目的。 ##### 1. 第一级缓存(Session缓存) - **定义**:第一级缓存是在`...

    Hibernate性能优化:一级缓存

    每次Session打开时,都会共享同一个SessionFactory的一级缓存,因此,对于同一会话内的多次查询,如果对象已在一级缓存中,那么就不会再去数据库进行检索,从而提高了数据访问速度。 一级缓存的工作流程如下: 1. ...

    Hibernatehibernate一级缓存.pdf

    这显示了Hibernate一级缓存如何提高性能,避免重复的数据库访问。 总结起来,Hibernate的一级缓存是一个关键特性,它提高了数据访问的效率并降低了数据库的负载。正确理解和使用一级缓存,以及学会管理缓存,是优化...

Global site tag (gtag.js) - Google Analytics