JPA:由于对象关系导致的性能问题

时间:2013-05-29 09:42:01

标签: jpa java-ee-6

我正在计划基于Java EE / JPA技术的第一个Web应用程序。 我知道JPA将Java类的对象结构映射到基于继承层次结构的数据库结构。有三种映射策略:

  • SINGLE_TABLE
  • JOINED
  • TABLE_PER_CLASS

Java中的对象可能具有引用的对象,此对象可能引用了其他对象,依此类推。我读到通过方便的@OneToMany,@ ManyToMany,@ OneToOne注释在类中定义了关系。我可以将这些关系FetchType定义为EAGER或LAZY。

默认的EAGER提取不会自动导致高级继承结构(可能在关系中包含某种圆圈)中的性能问题吗?是否有可能限制取出的程度,例如深入X?

1 个答案:

答案 0 :(得分:1)

AFAIK,你不能在JPA 2.0(又名EE6)中那样做。但是,在JPA 2.1(EE 7)中,您将能够使用新的EntityGraph API来定义所谓的提取计划(请参阅http://download.oracle.com/otndocs/jcp/persistence-2_1-fr-eval-spec/index.html)。

某些JPA提供程序具有提供程序特定的API,它在JPA 2.1之前提供类似的功能。

请注意,关联提取问题与继承映射的类型无关。