我正在使用hibernate查询缓存机制将查询结果存储在缓存中,并将从缓存中检索。但如果表中有任何更新,则应在下一次查询到达表时在缓存中更新。在这里我使用相同的查询,如select * from table。当我尝试这个时,我得到相同的信息,即使桌子已经上架。
答案 0 :(得分:1)
如果没有通过hibernate更新对象,则hibernate不会知道它们,因此查询缓存不会更新。如果通过hibernate更新,但在不同的应用程序服务器上,则需要使用跨群集的分布式缓存。例如JBoss树缓存。
如果您无法控制外部发生的更新,但是您知道发生的时间/周期,则可以使此查询缓存的TTL保持较短,以便hibernate在缓存之前清除缓存中的条目从外面更新。