对于查询缓存,每个查询结果的结果是StandardQueryCache区域中的一个条目。因此,您的缓存目前已设置为在默认/未命名区域中缓存10000个不同的查询结果。设置为使用命名区域(Query#setCacheRegion)的查询将写入其他缓存区域。
每当基础数据发生更改时,这些结果都需要“无效”。这就是UpdateTimestampsCache的目的。当Hibernate写入表时,它将进入UpdateTimestampsCache中(此过程仅在启用查询缓存时启用,因为它明确是使这些缓存的查询结果无效的一部分)。当读回缓存的查询结果时,我们将查询结果所缓存的时间戳与其用于确定结果是否仍然有效的所有表的时间戳进行对照。如果可能的话,最好不要限制该区域。如果需要,最好的数目是基础域模型中的表数。否则,缓存的查询结果可能会在不必要时开始变得无效。很难想象您有10000个表,所以在那里可能还不错。



