当调用EntityManager.flush()时,它是否也会刷新二级缓存?我试着用谷歌搜索,我也尝试冲洗它,它似乎是这样,但它确实是很好的。当调用EntityManager.flush()时,它是否也会刷新第二个缓存?
编辑:现在它似乎并没有像刷新二级缓存。
当调用EntityManager.flush()时,它是否也会刷新二级缓存?我试着用谷歌搜索,我也尝试冲洗它,它似乎是这样,但它确实是很好的。当调用EntityManager.flush()时,它是否也会刷新第二个缓存?
编辑:现在它似乎并没有像刷新二级缓存。
JPA没有二级缓存的概念(它不是规范的一部分)。所以第二级缓存的行为完全取决于JPA提供者。你在用什么Hibernate,EclipseLink,OpenJPA?
更新:我站在部分校正,JPA 2.0引入几个选项来控制第二级高速缓存的使用(如@Cachable)
L2高速缓存应该(默认,在任何合理的JPA实现)被在更新提交而不是刷新,但这不是在JPA2规范中强制执行的,所以您需要了解实现细节。 DataNucleus当然只会在提交时更新它。如果二级缓存在刷新时更新,然后这些对象更改回滚,则会导致潜在的无效/非持久数据被读取。有些人可能会允许这个选项。
似乎没有在EclipseLink中刷新二级缓存。 – LuckyLuke 2012-01-18 19:00:21
我正在使用EclipseLink – LuckyLuke 2012-01-18 18:43:28
在JPA中寻找有关缓存的内容时,我发现了一些关于二级缓存的良好链接 - 希望它们也能为您提供帮助 - http://docs.oracle.com/javaee/6/ tutorial/doc/gkjio.html http://help.sap.com/saphelp_nw73/helpdata/en/f5/bb247575004294831c900556ca62ae/frameset.htm – ND27 2014-03-13 18:22:47