在JPA中,EntityManager.refresh()对禁用的缓存很有用

时间:2013-03-14 08:31:22

标签: java caching jpa

得到一些新手问题。在JPA中,如果缓存被禁用,对EntityManager.refresh()的调用是否总是不再有用?

我正在维护这个应用程序,其中缓存被禁用但它仍然调用刷新。我正在考虑删除刷新调用,因为我认为它不需要并且不必要地增加了处理,但因为它不是我的原始代码所以有一些疑问是否有任何影响。

感谢您的评论。

1 个答案:

答案 0 :(得分:3)

您应该注意的一件事是涉及多层缓存(我想指的是二级缓存)。实体管理器也是第一级缓存 - 其范围要么绑定到事务,要么绑定到扩展持久性上下文的生命周期。

refresh()方法用于通过其他实体管理器对db进行的更改来更新现有和托管(当前EM的持久性上下文的一部分)实体。因此,无论是否存在二级缓存,都与refresh()调用的有意义和无意义无关。