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.
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:
Kes praktikal:
Andaikan kita ada Person
基类和两个子类 Student
和 Employee
. 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!