以下は、JPA注釈付きの型階層であり、すべてのデータフィールド(および関連するゲッターとセッター)は、ビジネスロジックを実装するための抽象的なメソッドとともにスーパータイプのメンバーです。データメンバーを追加せずにこれらの抽象メソッドを実装するサブタイプはいくつもあります。したがって、単一テーブル継承戦略を使用して、このタイプ階層をバックアップするためにデータベース内の1つのテーブルのみが必要になります。
データの内容に基づいて、最終的な目標を達成するために実装する必要のあるさまざまな動作があるため、このようにしました。
@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のディスクリミネーター列の概念の転覆ですか?
同僚は、データの構造はサブタイプごとに変化しないため、抽象メソッドと対応する実装を戦略パターンアプローチのようなものに移行する必要があると主張しています。彼の考えは良いですか?