Maison > Java > javaDidacticiel > Comment Hibernate gère-t-il l'identification des sous-classes ?

Comment Hibernate gère-t-il l'identification des sous-classes ?

WBOY
Libérer: 2024-04-17 21:12:01
original
692 Les gens l'ont consulté

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.

Hibernate 如何处理子类鉴别?

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 :

  • Tables d'union : Créez des tables séparées pour chaque sous-classe et utilisez des colonnes supplémentaires pour stocker les informations de sous-type.
  • Tableau unique : Créez un tableau pour toutes les sous-classes et utilisez la colonne discriminatrice pour les distinguer.
  • Hiérarchie des classes : Utilisez la table de classe de base pour stocker les attributs de la classe parent et utilisez la table des sous-classes pour stocker les attributs de la classe enfant.

Cas pratique :

Supposons que nous ayons un Person 基类和两个子类 StudentEmployee. 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 {
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal