我是hibernate的新手,遇到了关联映射和继承。根据我的理解,他们似乎做了完全相同的事情。
他们之间有什么区别?
答案 0 :(得分:0)
Hibernate中关联映射和继承之间的区别与任何OO编程语言几乎相同。
Association Mapping indicates HAS-A Relationship.
Inheritance indicates acquiring the properties of Parent Class to Child Class.
就像你告诉两者看起来一样,是的,你是对的。直接或间接地将Other类的属性或行为继承到类。在Hibernate或任何ORM中,它只是属性,因为它只处理数据。
我们有像 OneToOne,OneToMany和ManyToMany 这样的关联映射。 在所有关联映射中,我们只使用两个表,除了ManyToMany,我们使用Bridge表。
POJO类OneToOne注释或ManyToOne注释将使用外键引用另一个表中的行。
因此在OneToOne映射中,任何表都可以引用到另一个表。 (我们必须在这里指定table应该使用mappedBy属性引用另一个)
在OneToMany,我们没有任何困惑。 在ManyToMany中,我们与Bridge Table有两个OneToMany关联。因此适用于每个个人关系的OneToMany。
继承可以通过每个Concrete类的表,每个子类的表和每个层次结构的表来实现。
在继承映射中,当一个表用于多个类时,Hibernate使用discriminator列来区分数据以指示哪些行实际属于哪个实体。
在Table中,根据具体方法,该表继承了抽象类的列(POJO类中的属性或变量)。
在“每层次结构表”方法中,它每个层次结构方法只维护一个表。
在Table per subclass方法中,它维护每个子类的表。例如,如果单个实体有两个分支(子类)。然后,将有两个表。