4

私はJPAプロジェクトに取り組んでいます。私はExportProfileオブジェクトを持っています:

@Entity
public class ExportProfile{
    @Id
    @GeneratedValue
    private int id;

    private String name;

    private ExtractionType type;

    //...

}

ExtractionTypeはいくつかのクラスによって実装されたインターフェースであり、それぞれが異なる抽出タイプに対応しています。これらのクラスはシングルトンです。シングルトンtypeオブジェクトへの参照も同様です。ExtractionTypeDBにテーブルがありませんが、エクスポートプロファイルの抽出タイプを保持する必要があります。

ExportProfileJPAを使用してオブジェクトを永続化し、オブジェクトへの参照を保存するにはどうすればよいtypeですか?

注:ExtractionType新しい実装はいつでも追加できるため、実装の数は定義されていません。私もSpringを使用していますが、これは役に立ちますか?

4

1 に答える 1

1

ここにアイデアがあります:ExtractionTypeEnumを実装する可能性のあるシングルトンごとに 1 つの要素を持つ列挙体を作成し、それを .ExtractionTypeの代わりにエンティティ内のフィールドとして保存しますExtractionType。後で、ExtractionTypeEnum値に対応するシングルトンを取得する必要がある場合は、ケースごとに正しいシングルトンを返すファクトリを実装できます。

public ExtractionType getType(ExportProfile profile) {
    switch (profile.getExtractionTypeEnum()) {
        case ExtractionTypeEnum.TYPE1:
            return ConcreteExtractionType1.getInstance();
        case ExtractionTypeEnum.TYPE2:
            return ConcreteExtractionType2.getInstance();
    }
}

上記では、両方が実装されているConcreteExtractionType1と想定しています。ConcreteExtractionType2ExtractionType

于 2012-05-09T13:44:58.887 に答える