我正在设计一个数据库。我正在使用休眠。我有两种类型的层次结构
案例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;
}
我的问题是哪种方法更好?
答案 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。