Hibernate单向一对多关联 - 为什么连接表更好?

时间:2009-08-20 16:03:33

标签: hibernate one-to-many foreign-keys associations

在本文档中(向下滚动到“单向”部分):

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

它表示与连接表的单向一对多关联比仅使用自有实体中的外键列更受欢迎。我的问题是,为什么它更受欢迎?

2 个答案:

答案 0 :(得分:38)

考虑所拥有的实体类型也可以由另一个父实体类型拥有的情况。您是否将拥有的表中的外键引用放在两个父表中?如果您有三种父类型怎么办?它只是不适用于大型设计。

join-table解耦了join,因此拥有的表不知道父表,允许设计优雅地扩展。

答案 1 :(得分:11)

如果子实体只有一个父类型,则不需要连接表。 我用JPA(带有hibernate impl)完成了这个。

优点: 少一张桌子。 也许更好的表现。 不,“这张桌子是什么?”输入问题。

缺点: 从OO的角度来看,引入的孩子和父母之间存在额外的依赖关系。在实践中,这可能不是什么大问题,因为这种关系在孩子身上是私密的。

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

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