【问题标题】:Parent have list of child or Child have a parent reference父母有孩子名单或孩子有父母参考
【发布时间】:2014-08-01 10:01:37
【问题描述】:

我正在设计一个数据库。我正在使用休眠。我有两种类层次结构

案例一:

class Parent{
private Long id
private String name;
}

class Child{
private Parent parentId;
private String name;
}

案例2:

class Parent{
    private Long id
    private String name;
    private List<Child> childs;
    }

class Child{
private String name;
}

我的问题是哪种方法更好?

【问题讨论】:

  • 我更喜欢方法 1

标签: java mysql database hibernate


【解决方案1】:

这取决于您要如何处理和访问父子关系。

如果您只想从 Child 访问 Parent 并且 Child 是 Parent 的所有者,则情况 1 很好。

如果您想从父级访问子级列表但单个子级没有对父级的引用,则案例 2 很好。这一次 Parent 成为 Child 的所有者,您可以控制 Cascading,就像删除 Parent 一样,您可以删除与其关联的所有 Child。

我个人喜欢两者兼备的案例 3。

【讨论】:

    【解决方案2】:

    在 Hibernate 中,您可以将这些关联与集合和注释(如 @OneToMany 等)进行映射,正如您的第二个示例所示。

    我推荐this StackOverflow topic 进一步阅读。

    【讨论】:

      【解决方案3】:

      为什么不是他们两个? Hibernate 管理得很好:

      class Parent {
      
          private Long id
          private String name;
      
          @OneToMany
          private List<Child> children;
      
      }
      
      class Child {
      
          private String name;
      
          @ManyToOne
          private Parent parent;
      
      }
      

      更多详情请见http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch07.html#collections-bidirectional

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 1970-01-01
        • 2018-01-29
        • 2023-03-18
        相关资源
        最近更新 更多