我没有通过很多材料,但我无法清除对hibernate二级缓存的疑问。
1)让我们说,我有一个返回1000条记录的查询。 (例如,来自年龄> 30的员工)。 我已将查询设为可缓存。与此同时,记录的数量已经增加,现在同一查询的结果应为2000.现在,当我执行相同的查询时,hibernate如何从缓存中获取记录。它只获取新记录吗?
2)场景2.假设我执行查询(例如,来自年龄> 30的员工)。我得到了1000的记录。现在记录在内部更新。我再次执行相同的查询。在这种情况下,hibernate如何获取?
答案 0 :(得分:2)
查询缓存不会缓存实际实体的状态 结果集;它仅缓存标识符值和值的结果 类型。
场景1: Hibernate存储时间戳和查询以跟踪新记录,如果hibernate找到新记录,则会再次触发查询,逐出旧数据。
场景2:这将始终返回您更新的记录,因为实际状态对象从未使用查询缓存
有关详细信息,请参阅link