Rumah  >  Artikel  >  Java  >  Bagaimanakah Hibernate mengendalikan pengenalan subkelas?

Bagaimanakah Hibernate mengendalikan pengenalan subkelas?

WBOY
WBOYasal
2024-04-17 21:12:01667semak imbas

Hibernate menggunakan lajur diskriminator untuk pengecaman subkelas dan menyediakan strategi seperti jadual kesatuan, jadual tunggal dan hierarki kelas: Jadual kesatuan: Cipta jadual berasingan untuk setiap subkelas. Jadual tunggal: Buat jadual untuk semua subkelas, dibezakan oleh lajur diskriminator. Hierarki kelas: Gunakan jadual kelas asas untuk menyimpan atribut kelas induk dan gunakan jadual subkelas untuk menyimpan atribut subkelas.

Hibernate 如何处理子类鉴别?

Cara Hibernate mengendalikan pengenalan subkelas

Pengenalan

Dalam pengaturcaraan berorientasikan objek, subkelas sering digunakan untuk memperoleh kefungsian baharu daripada kelas asas. Hibernate menyediakan strategi yang berbeza untuk mengendalikan warisan objek, termasuk jadual kesatuan, jadual tunggal dan hierarki kelas.

Pengenalan subkelas

Pengenalan subkelas merujuk kepada proses menentukan subkelas entiti tertentu. Hibernate menggunakan lajur diskriminator untuk menyimpan maklumat yang mengenal pasti subkelas.

Strategi

Hibernate menyediakan tiga strategi utama untuk mengendalikan pengenalan subkelas:

  • Jadual kesatuan: Buat jadual berasingan untuk setiap subkelas dan gunakan lajur tambahan untuk menyimpan maklumat subjenis.
  • Jadual tunggal: Buat jadual untuk semua subkelas dan gunakan lajur diskriminator untuk membezakannya.
  • Hierarki Kelas: Gunakan jadual kelas asas untuk menyimpan atribut kelas induk dan gunakan jadual subkelas untuk menyimpan atribut kelas anak.

Kes praktikal:

Andaikan kita ada Person 基类和两个子类 StudentEmployee. Begini cara mengendalikan pengenalan subkategori menggunakan strategi jadual tunggal:

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 {

Atas ialah kandungan terperinci Bagaimanakah Hibernate mengendalikan pengenalan subkelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn