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

Bagaimanakah Hibernate mengendalikan pengenalan subkelas?

WBOY
Lepaskan: 2024-04-17 21:12:01
asal
685 orang telah melayarinya

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 {
Salin selepas log masuk

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan