Hibernate utilise la colonne discriminateur pour l'identification des sous-classes et propose des stratégies telles que des tables d'union, des tables uniques et des hiérarchies de classes : Tables d'union : créez des tables distinctes pour chaque sous-classe. Table unique : créez une table pour toutes les sous-classes, distinguées par la colonne discriminateur. Hiérarchie des classes : utilisez la table des classes de base pour stocker les attributs de la classe parent et utilisez la table des sous-classes pour stocker les attributs des sous-classes.
Comment Hibernate gère l'identification des sous-classes
Introduction
Dans la programmation orientée objet, les sous-classes sont souvent utilisées pour dériver de nouvelles fonctionnalités à partir d'une classe de base. Hibernate propose différentes stratégies pour gérer l'héritage d'objets, notamment les tables d'union, les tables uniques et les hiérarchies de classes.
Identification de sous-classe
L'identification de sous-classe fait référence au processus de détermination de la sous-classe d'une entité donnée. Hibernate utilise la colonne discriminator pour stocker les informations qui identifient les sous-classes.
Stratégies
Hibernate propose trois stratégies principales pour gérer l'identification des sous-classes :
Cas pratique :
Supposons que nous ayons un Person
基类和两个子类 Student
和 Employee
. Voici comment gérer l'identification des sous-catégories à l'aide d'une stratégie de table unique :
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 {
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!