32

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

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

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

4

2 回答 2

38

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

连接表将连接解耦,因此拥有的表不知道父表,从而允许设计优雅地扩展。

于 2009-08-20T16:05:57.893 回答
11

如果子实体只有一个父类型,则不需要连接表。我已经使用 JPA 完成了此操作(使用休眠 impl。)。

优点:少一张桌子。也许性能更好。没有“这张桌子是干什么用的?” 键入问题。

缺点:从 OO 的角度来看,在 child 和 parent 之间引入了额外的依赖关系。实际上,这可能没什么大不了的,因为这种关系在孩子身上是私密的。

例如
家长:
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
@MapKey(name = "name")
私人地图儿童;

孩子:
@ManyToOne(可选=假)
私人父母父母;
于 2009-08-20T16:21:30.233 回答