Hibernate 多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似 joined-subclass,但父类表联合所有子类列。
Hibernate 多态映射:深入解析
简介
在面向对象编程中,通常会遇到需要将继承类映射到数据库中的情况。Hibernate 通过多态映射功能,可以轻松实现这一需求。
多态映射类型
Hibernate 提供了几种多态映射类型,用于处理继承类之间的关系:
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
类:
@Entity public class Teacher extends Person { private Integer salary; // ... 省略其他字段 }
查询示例
要查询所有人员,可以使用以下代码:
Session session = sessionFactory.getCurrentSession(); List<Person> persons = session.createQuery("from Person", Person.class).list();
Hibernate 将根据继承策略自动加载子类数据。
优点
注意
以上是Hibernate 如何实现多态映射?的详细内容。更多信息请关注PHP中文网其他相关文章!