我查阅了很多资料,但还是无法消除对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/