我正在使用休眠来访问数据库。我正在使用休眠查询缓存,因为在 95% 的情况下只进行了 3 个查询。现在一旦对 db 进行初始化更新操作非常罕见。所以我只想在任何插入/更新时使缓存过期/delete 等非只读操作是在 db 上完成的。hibernate 可以吗?如果可以,怎么做?
提前致谢
您是指通过 Hibernate 完成的“插入/更新/删除 [...] 操作”吗?如果是这样,那已经是这样了。
还是您的意思是在 Hibernate 不知道的情况下对数据库执行“插入/更新/删除 [...] 操作”?在这种情况下,Hibernate 无法知道这一点。你需要告诉 Hibernate。有很多方法可以解决这个问题。最简单的是驱逐查询缓存区域:
sessionFactory.getCache().evictDefaultQueryRegion()
或者
sessionFactory.getCache().evictQueryRegion( "region-name-you-supplied-to-Query" )
或者
sessionFactory.getCache().evictQueryRegions()