Java jdbc查询对hibernate二级缓存有什么影响?是否可以触发特定缓存区域的缓存刷新

Java jdbc查询对hibernate二级缓存有什么影响?是否可以触发特定缓存区域的缓存刷新,java,hibernate,caching,jdbc,second-level-cache,Java,Hibernate,Caching,Jdbc,Second Level Cache,我有一个更新表的jdbc更新查询。在hibernate中为同一个表维护实体缓存。我需要告诉hibernate刷新由jdbc查询更新的实体的缓存区域。您正在寻找的 sessionFactory.getCache().evictEntityRegion(MyEntity.class) 这将从缓存中删除过时的条目。但是,如果在JDBC更新之前执行此操作,则在该失效和JDBC更新之间的窗口中,缓存可以通过并发读取再次填充,因此如果应用程序没有停止所有DB访问,则可能会出现一些过时的条目 更新后的另一个

我有一个更新表的jdbc更新查询。在hibernate中为同一个表维护实体缓存。我需要告诉hibernate刷新由jdbc查询更新的实体的缓存区域。

您正在寻找的

sessionFactory.getCache().evictEntityRegion(MyEntity.class)
这将从缓存中删除过时的条目。但是,如果在JDBC更新之前执行此操作,则在该失效和JDBC更新之间的窗口中,缓存可以通过并发读取再次填充,因此如果应用程序没有停止所有DB访问,则可能会出现一些过时的条目

更新后的另一个区域逐出可以解决问题,但在JDBC查询和区域逐出之间,缓存中的数据很容易不一致。

这应该会对您有所帮助