Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données, fournissant les types de mappage suivants : join-subclass : créez une table séparée pour la sous-classe, comprenant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent joint toutes les colonnes de sous-classe.
Mappage polymorphe Hibernate : analyse approfondie
Introduction
Dans la programmation orientée objet, vous rencontrez généralement des situations où vous devez mapper des classes héritées à la base de données. Hibernate peut facilement répondre à cette exigence grâce à la fonctionnalité de mappage polymorphe.
Types de mappage polymorphes
Hibernate fournit plusieurs types de mappage polymorphes pour gérer les relations entre les classes héritées :
joined-subclass
, mais réunit toutes les colonnes de sous-classe dans la table de classe parent. joined-subclass
类似,但在父类表中联合所有子类的列。实战案例
假设我们有一个抽象类 Person
,有两个子类 Student
和 Teacher
。Person
类有 id
和 name
字段,Student
类有 grade
字段,Teacher
类有 salary
字段。
Hibernate 映射配置
对于 Person
类:
@Entity @Inheritance(strategy = InheritanceType.JOINED) public abstract class Person { @Id private Long id; private String name; // ... 省略其他字段 }
对于 Student
类:
@Entity public class Student extends Person { private Integer grade; // ... 省略其他字段 }
对于 Teacher
Cas pratique
Supposons que nous ayons une classe abstraite Personne
et deux sous-classes Étudiant
et Enseignant
. La classe Person
a les champs id
et name
, la classe Student
a le grade</code > champ, < La classe code>Enseignant
a un champ salaire
.
Pour la classe Personne
:
@Entity public class Teacher extends Person { private Integer salary; // ... 省略其他字段 }
Étudiant
: Session session = sessionFactory.getCurrentSession(); List<Person> persons = session.createQuery("from Person", Person.class).list();
Enseignant
: Hibernate chargera automatiquement les données de la sous-classe selon la stratégie d'héritage.
AvantagesCe 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!