我需要为我们的软件实现一些配置架构。Configuration
桌子,而且有 ConfigurationProductA
和 ConfigurationProductB
扩展配置。
通常,我选择在子代上添加一个外键,引用了 Configuration
但我的理由不是很充分。因为我用的是HibernateJpa,可以(轻松)做到。
@Entity
@Table(name="ConfigurationProductA")
@PrimaryKeyJoinColumn(name = "conf_id")
public class ConfiguratioProductA extends Configuration{/*...*/}
从父类引用子类有什么利弊?最好的做法是什么?
这取决于父母和子女之间的关系类型。
假设一个子代只有一个父代,而一个父代可能有多个子代,那么这就是一对多的关系:你要把父代的id存储在子代中。
如果一个孩子可能有多个父母,而一个父母可能有多个孩子,那么这是一个多对多的关系。在这种情况下,规范的方法是有一个额外的实体,称为结表(或桥表)来存储父子关系。