使用注解的Hibernate Table Per Hierarchy

2024 年 8 月 29 日 | 阅读 3 分钟

在上一页中,我们使用xml文件映射了继承层次结构到一个表。在这里,我们将使用注解来执行此任务。 您需要使用@Inheritance(strategy=InheritanceType.SINGLE_TABLE), @DiscriminatorColumn 和 @DiscriminatorValue 注解来映射每个层次结构的表策略。

对于每个层次结构的表,只需要一个表来映射继承层次结构。在这里,在表中创建了一个额外的列(也称为鉴别器列)来识别类。

让我们看看继承层次结构

table per class hierarchy using annotation

此层次结构中有三个类。 Employee 是 Regular_Employee 和 Contract_Employee 类的超类。

此层次结构的表结构如下所示
table per class hierarchy using annotation

使用注解的Hibernate Table Per Hierarchy示例

您需要按照以下步骤创建简单的示例

  • 创建持久类
  • 编辑 pom.xml 文件
  • 创建配置文件
  • 创建类来存储获取的数据

1) 创建持久化类

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

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

2) 在 pom.xml 文件中添加项目信息和配置。

打开 pom.xml 文件并单击“source”。现在,在 <dependencies>....</dependencies> 标签之间添加以下依赖项。


3) 将持久类添加到配置文件中

打开 hibernate.cgf.xml 文件,并添加像这样的实体类条目

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


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

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

文件: StoreTest.java

输出

output of the table per class hierarchy

Hibernate继承映射中的主题

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