首页 文章

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

提问于
浏览
32

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

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

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

2 回答

  • 38

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

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

  • 11

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

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

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

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

相关问题