2012-03-04 157 views
-1

我正在使用OpenJPA。如果我想使用executeUpdate()方法进行批量删除/更新,JPA缓存是否会更新?或者这会绕过JPA缓存吗?当我说“缓存”时,我正在谈论L1和L2缓存。查询的类型是否重要(原生与JPQL)?谢谢。executeUpdate()对JPA缓存有什么影响?

回答

1

The documentation说:

持久化上下文不与 批量更新的结果同步或删除。

当执行批量更新或删除操作 时应该小心,因为它们可能会导致数据库和活动持久性上下文中的实体不一致。通常,只应在新持久性上下文中的 事务内或在事务的开始(在实体已被访问(其状态可能受此类操作影响的 )之前)执行批量更新和删除操作。

因此,由于OpenJPA没有同步L1缓存,所以我不明白它为什么会(以及如何)同步L2缓存。他可以冲洗它,但我怀疑它。无论如何测试都很简单。

相关问题