2012-05-09 10 views
4

私はJPAプロジェクトで作業しています。シングルトンを参照して永続化するオブジェクト

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

    private String name; 

    private ExtractionType type; 

    //... 

} 

ExtractionTypeがそれぞれ異なる抽出型ため、これらのクラスはシングルトンである、複数のクラスによって実装されるインターフェースである:私はExportProfileオブジェクトを持っています。 したがって、typeはシングルトンオブジェクトへの参照です。私はExtractionTypeテーブルを自分のDBに持っていませんが、抽出タイプの私のエクスポートプロファイルを保持する必要があります。

JP37を使用してExportProfileオブジェクトを永続化するには、typeオブジェクトへの参照を保存しますか?

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

+0

なぜExtractionTypeを永続化する必要がありますか? DBからエンティティを読み込むたびに、Dependency Injection(Springなど)を使用してExtractionTypeの実装をインジェクトすることはできませんか? – javatutorial

+0

@shuuchan right ...実際に私はSpringを使用していますが、どのインプリメンテーションを注入しなければならないのでしょうか? – davioooh

答えて

1

は、ここで考えです:ExtractionTypeEnumExtractionTypeを実装可能なシングルトンごとに1つの要素を持つ列挙を行い、その代わりExtractionTypeの、エンティティ内のフィールドとして保管します。あなたはExtractionTypeEnum値に対応するシングルトンを取得するために必要がある場合は後で、あなたはそれぞれのケースについて正しいシングルトン返すファクトリ実装することができます:上記で

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

を、私はその両方ConcreteExtractionType1と仮定しているとConcreteExtractionType2ExtractionTypeを実装します。

関連する問題