2

我已经阅读了很多材料,但我无法消除对休眠二级缓存的疑问。

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

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

4

1 回答 1

2

查询缓存不缓存结果集中实际实体的状态;它只缓存标识符值和值类型的结果。

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

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

更多详情请参考链接

于 2012-11-06T07:13:55.197 回答