2016-08-22 130 views
0

我是hibernate的新手,遇到了关联映射和继承问题。根据我的理解,他们似乎完全一样。Hibernate:关联映射vs继承

他们有什么区别?

+2

苹果是一种水果。这是继承。一个篮子包含水​​果,一个水果包含在一个篮子里。这是一个关联。它与Hibernate没有多大关系。更多与OO。 –

+0

@David G:感谢好友清除它 –

回答

0

Hibernate中关联映射和继承之间的区别与任何OO编程语言中的差别几乎相同。

Association Mapping indicates HAS-A Relationship. 
Inheritance indicates acquiring the properties of Parent Class to Child Class. 

就像你刚才说的一样,是的,你是对的。直接或间接地将其他类的属性或行为继承到类。在Hibernate中或者在任何ORM中,它将只是属性,因为它只处理数据。

我们有像OneToOne,OneToMany和ManyToMany的关联映射。 在所有关联映射中,我们只使用两个表,除了ManyToMany中我们使用Bridge表的地方。

POJO类OneToOne批注或ManyToOne批注将使用外键引用另一个表中的行。

所以在OneToOne映射中,任何表都可以被引用到另一个表中。 (我们必须在此指定表格应该使用mappedBy属性引用其他表格)

在OneToMany中,我们没有任何混淆。 在ManyToMany中,我们与Bridge Table有两个OneToMany关联。因此适用于每个个人关系的OneToMany。

继承可以通过表达每个具体类,每个子类表和每个层次表。

在继承映射中,当一个表用于多个类时,Hibernate使用区别列来区分数据以指示哪些行实际属于哪个实体。

在每个具体方法的表中,该表继承了Abstract类的列(属性或POJO类中的变量)。

在Table per Hierarchy方法中,它每个整个层次结构方法只维护一个表。

在Table per子类方法中,它为每个子类维护表。例如,如果有来自单个实体的两个分支(子类)。然后,将会有两个表格。