父级列表中的子级或子级具有父级引用

时间:2014-08-01 10:01:37

标签: java mysql database hibernate

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

案例1:

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;
}

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

3 个答案:

答案 0 :(得分:1)

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

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

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

我个人喜欢Case 3,它是两者的混合。

答案 1 :(得分:0)

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

我建议this StackOverflow topic进一步阅读。

答案 2 :(得分:0)

为什么不同时出现? 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