2012-01-18 29 views

回答

1

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

更新:我站在部分校正,JPA 2.0引入几个选项​​来控制第二级高速缓存的使用(如@Cachable

+0

我正在使用EclipseLink – LuckyLuke 2012-01-18 18:43:28

+0

在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

0

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

+0

似乎没有在EclipseLink中刷新二级缓存。 – LuckyLuke 2012-01-18 19:00:21

相关问题