Hibernate的单向一对多关联 - 为什么一个连接表更好吗?(Hibernate unidire

2019-06-18 15:31发布

在该文献中(向下滚动到单向节):

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-association-collections

它说,有一个连接表单向的一对多关联,但最好只使用在拥有实体的外键列。 我的问题是,为什么会更喜欢?

Answer 1:

考虑这样的国有实体类型也由另一名家长实体类型所拥有的情况。 你把外键引用在拥有的表到两个父表? 如果你有三个父类型? 它只是不适合大规模的设计。

联接表解耦加入,使拥有的表没有父表(S)的知识,使设计能够完美地扩展。



Answer 2:

如果孩子实体只有永远一个父类,那么就没有必要连接表。 我和JPA做到了这一点(有休眠implement执行)。

优点:少了一个表。 也许更好的性能。 没有“这是什么表?” 键入问题。

缺点:从面向对象的角度来看,引入儿童和家长之间的一个额外的依赖。 在实践中,这可能不是什么大不了的,因为关系是孩子专用。

e.g. 
parent:
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
@MapKey(name = "name")
private Map children;

child:
@ManyToOne(optional = false)
private Parent parent;


文章来源: Hibernate unidirectional one to many association - why is a join table better?