得到一些新手问题。在JPA中,如果缓存被禁用,对EntityManager.refresh()
的调用是否总是不再有用?
我正在维护这个应用程序,其中缓存被禁用但它仍然调用刷新。我正在考虑删除刷新调用,因为我认为它不需要并且不必要地增加了处理,但因为它不是我的原始代码所以有一些疑问是否有任何影响。
感谢您的评论。
答案 0 :(得分:3)
您应该注意的一件事是涉及多层缓存(我想指的是二级缓存)。实体管理器也是第一级缓存 - 其范围要么绑定到事务,要么绑定到扩展持久性上下文的生命周期。
refresh()
方法用于通过其他实体管理器对db进行的更改来更新现有和托管(当前EM的持久性上下文的一部分)实体。因此,无论是否存在二级缓存,都与refresh()调用的有意义和无意义无关。