调用EntityManager.flush()时,它也会刷新第二个缓存



调用EntityManager.flush()时,是否也会刷新二级缓存?我试着在谷歌上搜索,也试着冲洗它,看起来确实如此,但最好能确认一下。

编辑:现在它似乎没有刷新二级缓存

JPA没有二级缓存的概念(它不是规范的一部分)。因此,二级缓存的行为完全取决于JPA提供者。你在用什么Hibernate,EclipseLink,OpenJPA?

更新:我已经部分更正,JPA 2.0引入了一些选项来控制二级缓存的使用(如@Cachable)

二级缓存应该(默认情况下,在任何合理的JPA实现中)在提交时更新而不是刷新,但JPA2规范中没有强制要求这样做,所以您只需了解实现细节。DataNucleus当然只在提交时更新它。如果在刷新时更新了二级缓存,然后回滚了这些对象的更改,这将导致读取潜在的无效/非持久性数据。有些人可能会允许这样做。

最新更新