JPA继承简介
继承是面向对象编程语言的一个关键特性,其中子类可以获取其父类的属性。 此功能增强了代码的可重用性。
关系数据库不支持继承机制。 因此,Java Persistence API(JPA)用于映射关系数据库模型中的继承关键特性。
JPA继承注解
以下是最常用的JPA继承注释 -
@Inheritence
- 此注解应用于根实体类以定义继承策略。 如果没有使用此注释定义策略类型,那么它遵循单表战略。@MappedSuperclass
- 此注释应用于由其子类继承的类。 映射的超类不包含任何单独的表。@DiscriminatorColumn
- 鉴别器属性将一个实体与另一个实体区分开来。 因此,该注释用于提供鉴别器列的名称。 仅需要在根实体类上指定此注释。@DiscriminatorValue
- 此注释用于指定表示特定实体的值的类型。 需要在子实体类中指定此注释。
注 - 如果我们未传递鉴别器列的名称及其值,那么JPA默认将其视为默认值。 它将
DTYPE
视为鉴别器列名称和实体名称作为鉴别器值。
JPA继承策略
JPA提供了三种策略,通过这些策略我们可以在数据库中轻松实现持久化继承。
- 单表策略
- 加入策略
- 每表每类策略