0 0

hibernate 一对多时二级缓存不起作用3

hibernate配置了二级缓存和查询缓存,在查询Problem实体时走缓存,但是getAnswers()时却不走缓存(能输出hql语句),也许有配置的地方 也许没有
请熟悉缓存配置的帮忙
@Entity
@Table(name="ask_problem")
@Searchable(alias = "problem")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Problem implements Serializable{
        //省略属性和getter setter

	@OneToMany(mappedBy="problem", cascade = { CascadeType.REMOVE })
	@OrderBy("right DESC, answerTime ASC")
	public Set<Answer> getAnswers() {
		return answers;
	}
	public void setAnswers(Set<Answer> answers) {
		this.answers = answers;
	}
}

问题补充:
这个问题已经找到答案 如下配置
@OneToMany(mappedBy="problem", cascade = { CascadeType.REMOVE })
	@OrderBy("right DESC, answerTime ASC")
	@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) //添加这句就ok了
	public Set<Answer> getAnswers() {
		return answers;
	}
2008年11月10日 16:17

3个答案 按时间排序 按投票排序

0 0

采纳的答案

可以参考http://www.iteye.com/topic/18904

2008年11月10日 16:25
0 0

简单说,二级缓存的key是ID,如果查询不是根据ID,就不走了。

2008年11月10日 16:44
0 0

如果从answers查problem应该就走缓存了,因为那是根据ID查询的。
从problem查answers,不走二级缓存。查询缓存命中率比较底,我们是很少用的。

2008年11月10日 16:23

相关推荐

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

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

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

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

    Hibernate一级缓存和二级缓存

    一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用。 描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的...

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

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

    hibernate的一级缓存和二级缓存

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

    hibernate二级缓存实例

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

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

    二级缓存是 SessionFactory 级别的全局共享缓存,它可以跨多个 Session 存储和复用数据。二级缓存可以显著减少对数据库的访问,尤其在处理大量读取操作的应用中。为了开启二级缓存,你需要做以下步骤: 1. 引入二级...

    hibernate5.1二级缓存包

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

    hibernate二级缓存示例源码

    然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate二级缓存的基本概念、工作原理及如何通过示例源码实现。 ### 1. 二级缓存概述 Hibernate的一级缓存是Session级别的...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通常,一级缓存由Hibernate Session管理,而二级缓存则可以跨越多个Session进行共享。 在Spring Boot项目中配置Redis作为Hibernate的二级缓存,我们需要以下步骤: 1. **添加依赖**: 首先,在`pom.xml`文件中...

    hibernate二级缓存包

    1. **二级缓存的作用**:一级缓存是每个Session内部的缓存,用于存储Session内的对象,而二级缓存则是一个全局范围的缓存,它可以在多个Session之间共享,减少了对数据库的频繁访问,尤其是在读多写少的场景下,性能...

    Hibernate 二级缓存 总结整理

    2. **二级缓存(Second-Level Cache)**:一级缓存的局限在于它只存在于单个Session中,当Session关闭时,一级缓存中的数据也会丢失。二级缓存是SessionFactory级别的,可以跨Session共享,能够存储更多的持久化对象...

    hibernate二级缓存java包下载

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

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

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

    Hibernate一级缓存和二级缓存【内附二级缓存数据存储结构】

    本文将深入探讨Hibernate的一级缓存和二级缓存,以及二级缓存的数据存储结构。 首先,一级缓存是Hibernate默认提供的缓存,每个Session都有一个独立的一级缓存。当我们在操作数据库时,例如查询或更新记录,这些...

    hibernate 二级缓存

    3. **查询优化**:在进行批量查询时,如果某个对象已经在二级缓存中,Hibernate会直接从缓存中读取,避免了多次数据库访问。 **三、配置二级缓存** 配置Hibernate二级缓存主要包括以下步骤: 1. 引入缓存依赖:在...

    Hibernate4二级缓存实例(源码)

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

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

    二级缓存是多个Session共享的,可以跨事务存储对象,提高了数据读取速度,减少了对数据库的压力。 2. **缓存提供商**:Hibernate支持多种缓存提供商,如EhCache、Infinispan等。EhCache是一个广泛使用的开源Java...

Global site tag (gtag.js) - Google Analytics