【发布时间】:2012-03-22 01:29:00
【问题描述】:
我正在使用 OpenJPA。如果我想使用 executeUpdate() 方法进行批量删除/更新,JPA 缓存会更新吗?或者这会绕过 JPA 缓存吗?当我说“缓存”时,我指的是 L1 和 L2 缓存。查询的类型是否重要(本机与 JPQL)?谢谢。
【问题讨论】:
我正在使用 OpenJPA。如果我想使用 executeUpdate() 方法进行批量删除/更新,JPA 缓存会更新吗?或者这会绕过 JPA 缓存吗?当我说“缓存”时,我指的是 L1 和 L2 缓存。查询的类型是否重要(本机与 JPQL)?谢谢。
【问题讨论】:
持久化上下文与结果不同步 批量更新或删除。
执行批量更新或删除操作时应谨慎 因为它们可能会导致数据库和数据库之间的不一致 活动持久性上下文中的实体。一般来说,散装 更新和删除操作只能在一个 事务在新的持久性上下文中或在开始时 事务(在访问实体之前,其状态可能是 受到此类操作的影响)。
所以,由于 OpenJPA 不同步 L1 缓存,我不明白它为什么会(以及它如何)同步 L2 缓存。他可以冲洗它,但我对此表示怀疑。无论如何,它很容易测试。
【讨论】: