以下是 JPA 注释类型层次结构,其中所有数据字段(以及相关的 getter 和 setter)都是超类型的成员以及用于实现业务逻辑的抽象方法。有许多子类型在不添加数据成员的情况下实现这些抽象方法,因此我们使用单表继承策略,因此我们只需要数据库中的一个表来支持这种类型层次结构。
我这样做是因为,根据数据的内容,必须实施不同的行为才能实现最终目标。
@Entity
@Table
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class SuperEntity {
// Several fields and getters and setters
...
// Abstract method declarations for business logic
...
}
@Entity
@DiscriminatorValue("some value")
public class SomeSubtype extends SuperEntity {
// Implementations of abstract methods
...
}
这是对 JPA/Hibernate 中鉴别器列概念的扭曲吗?
一位同事争辩说,由于数据的结构不会因子类型而异,因此抽象方法和相应的实现应该移动到类似于策略模式的方法中。他的想法更好吗?