Heim >Java >javaLernprogramm >Wie implementiert Hibernate polymorphe Zuordnung?

Wie implementiert Hibernate polymorphe Zuordnung?

王林
王林Original
2024-04-17 12:09:01560Durchsuche

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: verbundene Unterklasse: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Subclass: Ähnlich wie Joined-Subclass, aber die Tabelle der übergeordneten Klasse verbindet alle Spalten der Unterklasse.

Hibernate 如何实现多态映射?

Hibernate Polymorphic Mapping: Detaillierte Analyse

Einführung
Bei der objektorientierten Programmierung stoßen Sie normalerweise auf Situationen, in denen Sie geerbte Klassen der Datenbank zuordnen müssen. Hibernate kann diese Anforderung durch polymorphe Mapping-Funktionalität leicht erfüllen.

Polymorphe Zuordnungstypen
Hibernate bietet mehrere polymorphe Zuordnungstypen für die Handhabung von Beziehungen zwischen geerbten Klassen:

  • Joined-Subclass: Erstellt eine separate Tabelle für jede Unterklasse und enthält die übergeordneten Spalten aller Klassen in der Klassentabelle.
  • Tabelle pro Klasse: Erstellen Sie für jede Unterklasse eine separate Tabelle, die nur unterklassenspezifische Spalten enthält.
  • union-subclass: Ähnlich wie joined-subclass, vereint jedoch alle Unterklassenspalten in der übergeordneten Klassentabelle. joined-subclass 类似,但在父类表中联合所有子类的列。

实战案例
假设我们有一个抽象类 Person,有两个子类 StudentTeacherPerson 类有 idname 字段,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

Praktischer Fall
Angenommen, wir haben eine abstrakte Klasse Person und zwei Unterklassen Student und Teacher. Die Klasse Person hat die Felder id und name, die Klasse Student hat die Felder note-Feld, < Die Klasse code>Lehrer hat ein Feld Gehalt.

Hibernate-Mapping-Konfiguration

Für die Klasse Person:

@Entity
public class Teacher extends Person {
  private Integer salary;
  // ... 省略其他字段
}

Für die Klasse Student:
    Session session = sessionFactory.getCurrentSession();
    List<Person> persons = session.createQuery("from Person", Person.class).list();
  • Für die Klasse Teacher:
  • rrreee
  • Abfragebeispiel
  • Um das gesamte Personal abzufragen, können Sie den folgenden Code verwenden:
rrreee

Hibernate lädt die Unterklassendaten automatisch gemäß der Vererbungsstrategie.

Vorteile
  • Vereinfachen Sie die Zuordnung geerbter Klassen.
Unterstützt polymorphe Abfragen, um alle Unterkategoriedaten auf konsistente Weise abzurufen. 🎜🎜Entsprechend der Vererbungsstrategie kann die Tabellenstruktur optimiert werden. 🎜🎜🎜🎜 HINWEIS 🎜🎜🎜🎜 Es ist sehr wichtig, die geeignete Vererbungsstrategie zu wählen, die sich auf Leistung und Benutzerfreundlichkeit auswirkt. 🎜🎜Bei der Verwendung von polymorphem Mapping sollten Sie sicherstellen, dass die Struktur der Datenbanktabelle mit der Mapping-Konfiguration übereinstimmt. 🎜🎜

Das obige ist der detaillierte Inhalt vonWie implementiert Hibernate polymorphe Zuordnung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn