Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data, menyediakan jenis pemetaan berikut: subkelas bercantum: Buat jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: Serupa dengan joined-subclass, tetapi jadual kelas induk menyertai semua lajur subclass.
Pemetaan Polimorfik Hibernate: Analisis Mendalam
Pengenalan
Dalam pengaturcaraan berorientasikan objek, anda biasanya menghadapi situasi di mana anda perlu memetakan kelas yang diwarisi ke pangkalan data. Hibernate boleh mencapai keperluan ini dengan mudah melalui fungsi pemetaan polimorfik.
Jenis pemetaan polimorfik
Hibernate menyediakan beberapa jenis pemetaan polimorfik untuk mengendalikan perhubungan antara kelas yang diwarisi:
joined-subclass
, tetapi menggabungkan semua lajur subclass dalam jadual kelas induk. 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
Kes praktikal
Andaikan kita mempunyai kelas abstrak Orang
mempunyai medan id
dan name
, kelas Student
mempunyai gred
> medan, < Kelas kod>Guru mempunyai medan gaji
.
Untuk kelas
@Entity public class Teacher extends Person { private Integer salary; // ... 省略其他字段 }
Session session = sessionFactory.getCurrentSession(); List<Person> persons = session.createQuery("from Person", Person.class).list();
Hibernate akan memuatkan data subkelas secara automatik mengikut strategi pewarisan.
KelebihanAtas ialah kandungan terperinci Bagaimanakah Hibernate melaksanakan pemetaan polimorfik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!