代码之家  ›  专栏  ›  技术社区  ›  Mattias Holmqvist

将休眠实体重构为子类

  •  6
  • Mattias Holmqvist  · 技术社区  · 16 年前

    我有一个类,它当前被映射为使用hibernate的数据库表中的实体。这个类应该重构成一个抽象类,其中包含所有子类共用的一些字段。

    我正在使用注释来映射休眠实体/关系类。

    我想要关于如何进行重构的建议/变体。

    此外,对于如何将存储在数据库中的数据(用于将来的抽象超类)移动到一个具体的子类中提出了一些建议。

    1 回复  |  直到 14 年前
        1
  •  10
  •   Vincent Ramdhanie    14 年前

    首先,我将创建超类并添加必要的注释。您必须在以下两者之间做出决定:

    • 每类策略表
    • 每个类的单个表层次结构策略
    • 连接子类的策略

    我认为连接的子类将在这里工作。添加注释:

    @Entity
    @Inheritance(strategy=InheritanceType.JOINED)
    

    去超级班。

    其次,我将创建表示子类的表。记住,这些列将只具有子类独有的列,共享的列将保留在超级类中。然后从超级类表中选择属于每个子类的行,并移动数据。

    我不确定你是否在找更具体的东西?这个 article 解释Hibernate的继承。