使用注解的每个具体类表

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

在每具体类表中,每个类都会创建一个表。因此表中没有可空值。这种方法的缺点是子类表中会创建重复的列。

在这里,我们需要在父类中使用 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 注解,并在子类中使用 @AttributeOverrides 注解。

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 指定我们正在使用每具体类表策略。它应该只在父类中指定。

@AttributeOverrides 定义父类属性将在此类中被重写。在表结构中,父类表列将被添加到子类表中。

类层次结构如下所示

table per concrete class
每个表的表结构将如下所示

Employee 类的表结构

table per concrete class

Regular_Employee 类的表结构

table per concrete class

Contract_Employee 类的表结构

table per concrete class

每具体类表的示例

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

1) 创建持久化类

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

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

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

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


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

文件: hibernate.cfg.xml

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


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

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

文件:StoreData.java

下一主题每子类表