现在您可以以更简洁的方式定义作者、类别和发票实体。例如,这是 Category 新代码:
package com.yourcompany.invoicing.model;
import javax.persistence.*;
import lombok.*;
@Entity @Getter @Setter
public class Category extends Identifiable { //从 identifiable 继承而来,所以不须要 id 这个属性
@Column(length=50)
String description;
}
重构非常简单, Category 现在从 Identifiable 继承而来,并删除了 oid 属性。这样,您的代码不仅更短也更优雅,因为您声明该类是 identifiable 可识别的(是什么,而不是如何),并且您从业务逻辑类中删除了一些技术性的代码。
将相同的重构应用于 Author 和 Invoice 实体。此外,从现在开始,大多实体将从映射超类 Identifiable 继承。
我们创建了 Identifiable 类来了解使用映射超类的好处,不过 OpenXava 为您准备了一个可以使用的 Identifiable 类,在 org.openxava.model 包中可以找到。因此,在您的下一个项目中,您不需要再次编写 Identifiable 类,只需使用 OpenXava 自带的即可。
总结
您学到映射式超类是具有 JPA 映射注解的普通类,您可以将其用作实体的基本类。此外,您还学习了如何使用映射式超类来简化代码。