使用 XML 文件的 Hibernate 表单继承

24 Oct 2024 | 3 分钟阅读

通过这种继承策略,我们可以仅通过单个表映射整个层次结构。 在此处,在表中创建了一个额外的列(也称为鉴别器列)来标识类。

首先让我们了解一下问题。 我想将下面给出的整个层次结构映射到数据库的一个表中。

table per class hierarchy in inhertance mapping

此层次结构中有三个类。 Employee 是 Regular_Employee 和 Contract_Employee 类的超类。 让我们看一下此层次结构的映射文件。

对于每个类层次结构的表,hibernate 框架会添加一个鉴别器列,用于指定记录的类型。 它主要用于区分记录。 要指定此选项,必须指定 class 的 discriminator 子元素。
class 的 subclass 子元素指定子类。 在这种情况下,Regular_Employee 和 Contract_Employee 是 Employee 类的子类。
 

此层次结构的表结构如下所示

table per class hierarchy table

每个类层次结构的表示例

在这个例子中,我们创建了三个类,并在 employee.hbm.xml 文件中提供了这些类的映射。

1) 创建持久化类

您需要创建表示继承的持久化类。 让我们为上面的层次结构创建三个类

文件:Employee.java
文件:Regular_Employee.java
文件:Contract_Employee.java

2) 为持久类创建映射文件

上面已经讨论了层次结构的映射。

文件:employee.hbm.xml

3) 在配置文件中添加 hbm 文件的映射

打开 hibernate.cgf.xml 文件,并添加映射资源条目,如下所示

现在,配置文件将如下所示

文件: hibernate.cfg.xml

定义了 hbm2ddl.auto 属性,用于在数据库中创建自动表。


4) 创建存储持久化对象的类

在这个类中,我们只是将员工对象存储在数据库中。

文件:StoreData.java

输出

output of the table per class hierarchy

Hibernate 继承映射中的主题

使用 xml 文件的每个层次结构表
使用注解的每个层次结构表
使用 xml 文件的每个具体类表
使用注解的每个具体类表
使用 xml 文件的每个子类表
使用注解的每个子类表