0

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

  • SINGLE_TABLE
  • 已加入
  • TABLE_PER_CLASS

Java中的一个对象可能有引用的对象,这个对象可能有更多的引用对象等等。我读到这些关系是通过方便的@OneToMany、@ManyToMany、@OneToOne 注释在类中定义的。我可以将这些关系 FetchType 定义为 EAGER 或 LAZY。

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

4

1 回答 1

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,这些 API 在 JPA 2.1 之前提供类似的功能。

请注意,关联获取的问题实际上与继承映射的类型无关。

于 2013-05-29T10:33:06.913 回答