Hibernate查询缓存理解

标签 hibernate caching

我查阅了很多资料,但还是无法消除对hibernate二级缓存的一个疑问。

1) 假设我有一个返回 1000 条记录的查询。 (例如,来自年龄 >30 岁的员工)。 我已将查询设置为可缓存。与此同时,记录数量增加了,现在同一查询的结果应该是 2000 条。现在,下次当我执行同一查询时,hibernate 如何从缓存中获取记录。它只获取新记录吗?

2) 场景 2。假设我执行查询(例如,来自年龄>30 的员工)。我有1000条记录。现在记录已在内部更新。我再次执行相同的查询。在这种情况下,hibernate 如何获取?

最佳答案

Query cache does not cache the state of the actual entities in the result set; it caches only identifier values and results of value type.

场景 1: Hibernate 将时间戳与查询一起存储以跟踪新记录,如果 hibernate 发现新记录,则将再次触发查询以逐出旧数据。

场景 2:这将始终返回更新的记录,因为实际状态对象从未通过查询缓存

更多详情请参阅link

关于Hibernate查询缓存理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13245684/

相关文章:

caching - 我的 CUDA JIT 缓存始终远低于 CUDA_CACHE_MAXSIZE

java - 通过两种单独的方法获取数据

spring-mvc - 将缓存 Redis 过期时间设置为 1 年

java - 如何将 Controller 与表单集成(Hibernate Spring Vaadin)

java - 拦截对数据库的查询

java - 将 hibernate 投影结果映射到 Java POJO 模型

java - JPA - 使用复合 PK 和 FK 并定义关系

java - Hibernate:按内部列表的值过滤实体的结果列表

android - 在 Android 中缓存从 XML 解析的对象

java - GAE 和响应缓存