Ниже приведена иерархия аннотированных типов JPA, в которой все поля данных (и связанные методы получения и установки) являются членами супертипа вместе с абстрактными методами для реализации бизнес-логики. Существует любое количество подтипов, которые реализуют эти абстрактные методы без добавления элементов данных, поэтому мы используем стратегию наследования одной таблицы, поэтому нам нужна только одна таблица в базе данных для поддержки этой иерархии типов.
Я сделал это таким образом, потому что, в зависимости от содержания данных, для достижения конечной цели необходимо реализовать различные способы поведения.
@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?
Сотрудник утверждает, что, поскольку структура данных не изменяется от подтипа к подтипу, абстрактные методы и соответствующие реализации должны быть перенесены во что-то вроде подхода шаблонов стратегии. Его представление лучше?