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

Hibernate单向一对多关联-为什么连接表更好?,hibernate,one-to-many,foreign-keys,associations,Hibernate,One To Many,Foreign Keys,Associations,在此文档中(向下滚动至单向部分): 它说,与连接表的单向一对多关联相比,在拥有的实体中只使用外键列更可取。我的问题是,为什么它更受欢迎?考虑这样一种情况,即拥有的实体类型也可以由另一个父实体类型拥有。是否将所属表中的外键引用同时放在两个父表中?如果有三种父类型呢?它无法扩展到大型设计 联接表将联接解耦,以便拥有的表不知道父表,从而使设计能够优雅地扩展。如果子实体只有一种父类型,则不需要联接表。 我已经用JPA(使用hibernate impl.)完成了这项工作 优点: 少一张桌子。 也许会有更

在此文档中(向下滚动至单向部分):


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

考虑这样一种情况,即拥有的实体类型也可以由另一个父实体类型拥有。是否将所属表中的外键引用同时放在两个父表中?如果有三种父类型呢?它无法扩展到大型设计


联接表将联接解耦,以便拥有的表不知道父表,从而使设计能够优雅地扩展。

如果子实体只有一种父类型,则不需要联接表。 我已经用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; 例如 起源: @OneToMany(mappedBy=“parent”,cascade=CascadeType.ALL) @MapKey(name=“name”) 私人地图儿童; 儿童: @多通(可选=假) 私人家长;
你能详细说明一下不利因素吗?请注意,在JPA2.0中,不再需要在子对象上引用父对象。只需在父对象上使用@JoinColumn注释。@EdyBourne-您知道Hibernate的哪个版本增加了对该注释的支持吗?请参阅在连接表中调用的内部SQL操作与在