Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 父项具有子项列表或子项具有父项引用_Java_Mysql_Database_Hibernate - Fatal编程技术网

Java 父项具有子项列表或子项具有父项引用

Java 父项具有子项列表或子项具有父项引用,java,mysql,database,hibernate,Java,Mysql,Database,Hibernate,我正在设计一个数据库。我正在使用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&

我正在设计一个数据库。我正在使用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;
}
类父类{
私人长id
私有字符串名称;
私人名单儿童;
}
班童{
私有字符串名称;
}

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

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

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

如果您希望从父级访问子级列表,但单个子级没有对父级的引用,则情况2很好。这一次,父对象成为子对象的所有者,您可以控制级联,就像删除父对象时可以删除与其关联的所有子对象一样


我个人喜欢案例3,它是两者的混合体。

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


我建议大家继续阅读。

为什么不两本都读呢?Hibernate管理得非常好:

class Parent {

    private Long id
    private String name;

    @OneToMany
    private List<Child> children;

}

class Child {

    private String name;

    @ManyToOne
    private Parent parent;

}
类父类{
私人长id
私有字符串名称;
@独身癖
私人名单儿童;
}
班童{
私有字符串名称;
@许多酮
私人家长;
}

有关更多详细信息,请参阅。

我更喜欢方法1