持久和对象引用单例

时间:2012-05-09 13:20:18

标签: java spring hibernate jpa

我正在开发一个JPA项目。我有一个ExportProfile对象:

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

    private String name;

    private ExtractionType type;

    //...

}

ExtractionType是由几个类实现的接口,每个类用于不同的提取类型,这些类是单例。 所以type是对单例对象的引用。我的数据库中没有ExtractionType表,但我必须保留导出配置文件提取类型

如何使用JPA保留ExportProfile对象,保存对type对象的引用?

注意:未定义ExtractionType实施的数量,因为可以随时添加新的实施。我也在使用Spring,这有帮助吗?

1 个答案:

答案 0 :(得分:1)

这是一个想法:制作一个ExtractionTypeEnum,一个包含一个元素的枚举,用于实现ExtractionType的每个可能的单例,并将其存储为实体中的字段,而不是{{1} }。稍后,如果您需要检索与ExtractionType值对应的单例,则可以实现为每种情况返回正确单例的工厂:

ExtractionTypeEnum

在上文中,我假设public ExtractionType getType(ExportProfile profile) { switch (profile.getExtractionTypeEnum()) { case ExtractionTypeEnum.TYPE1: return ConcreteExtractionType1.getInstance(); case ExtractionTypeEnum.TYPE2: return ConcreteExtractionType2.getInstance(); } } ConcreteExtractionType1都实现了ConcreteExtractionType2