Inheritance Mappings
Polymorphic queries or
associations?
No, but stay flexible No Yes
Table per Class Mapped Superclass Performance or
consistency?
@Entity @MappedSuperclass
@Inheritance(strategy = public abstract class Publication { … } Consistency Performance
InheritanceType.TABLE_PER_CLASS)
public abstract class Publication { … } @Entity(name = "Book")
Single Table
public class Book extends Publication { … }
@Entity(name = "Book")
@Entity
public class Book extends Publication { … }
@Inheritance(strategy =
Joined
InheritanceType.SINGLE_TABLE)
@Entity @DiscriminatorColumn(name =
@Inheritance(strategy = "Publication_Type")
[Link]) @DiscriminatorValue("Publication")
public abstract class Publication { … } public class Publication { … }
@Entity(name = "Book") @Entity(name = "Book")
public class Book extends Publication { … } @DiscriminatorValue("Book"
public class Book extends Publication { … }
[Link]