Hibernate uses the discriminator column for subclass identification, and provides strategies such as union tables, single tables, and class hierarchies: Union tables: Create separate tables for each subclass. Single table: Create a table for all subclasses, distinguished by the discriminator column. Class hierarchy: Use the base class table to store parent class attributes, and use the subclass table to store subclass attributes.
How Hibernate handles subclass identification
Introduction
In object-oriented programming In , subclasses are often used to derive new functionality from a base class. Hibernate provides different strategies for handling object inheritance, including union tables, single tables, and class hierarchies.
Subclass identification
Subclass identification is the process of determining which subclass a given entity is. Hibernate uses the discriminator column to store information that identifies subclasses.
Strategy
Hibernate provides three main strategies to handle subclass identification:
Practical case:
Suppose we have a Person
base class and two subclasses Student
andEmployee
. Here's how to handle subclass identification using a single table strategy:
import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Table; @Entity @Table(name = "Person") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } @DiscriminatorValue("Student") public class Student extends Person { private String grade; } @DiscriminatorValue("Employee") public class Employee extends Person {
The above is the detailed content of How does Hibernate handle subclass identification?. For more information, please follow other related articles on the PHP Chinese website!