Hibernate:关联映射与继承

时间:2016-08-22 06:54:25

标签: hibernate

我是hibernate的新手,遇到了关联映射和继承。根据我的理解,他们似乎做了完全相同的事情。

他们之间有什么区别?

1 个答案:

答案 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方法中,它维护每个子类的表。例如,如果单个实体有两个分支(子类)。然后,将有两个表。