在JPA中使用coordinationType有什么用?

时间:2014-02-10 07:38:23

标签: java jpa eclipselink

我是JPA的新手,我开始使用JPA应用程序。在做的时候我找到了

@Cache(coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS)

更多类型协调。我没有在JPA中使用coordinationType。任何人都可以告诉我何时使用和使用什么协调类型。

2 个答案:

答案 0 :(得分:5)

JPA 2.0使用两个缓存:第一个是您的实体管理器。它可以在JPA 1.0中使用,并在其生命周期内缓存其对象。由于您应该将实体管理器用于单个工作单元,因此这个生命周期通常很短。 JPA 2.0引入了二级缓存,其中对象通常寿命更长。虽然这通常会带来性能优势,但可能会导致缓存不一致,尤其是在multionode环境中。 CacheCoordinationType是一个用于控制缓存复制的eclipselink扩展。对于便携式应用程序,您可能希望使用JPA缓存API。哪种策略最好取决于您的应用程序对一致性和性能的需求。如果您希望获得最佳性能,并且可以使用过时的答案,请不要传播更改,但要限制缓存中对象的生命周期。否则通知有关变更并注意事项:

  1. 在多节点中,您必须正确设置缓存复制。
  2. 您必须处理可能会更改数据的其他应用程序。这通常意味着禁用可能从其他应用程序更改的表的缓存。

答案 1 :(得分:0)

根据CacheCoordinationType javadoc:

draw_image()

以下是一些可能有用的资源: @Example 2-10使用@Cache Annotation https://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_cache.htm

优化#3 - 查询缓存 http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html