Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 HibernateMySQL_Java_Mysql_Hibernate - Fatal编程技术网

Java HibernateMySQL

Java HibernateMySQL,java,mysql,hibernate,Java,Mysql,Hibernate,假设我有这样的POJO,我想在MySQL数据库中插入文章 @Entity @Table(name = "article") public class Article{ private String author; private String body; private int commentCount; private List<EntryComment> comments; @Entity @Table(name = "comments") p

假设我有这样的POJO,我想在MySQL数据库中插入文章

@Entity
@Table(name = "article")
public class Article{
    private String author;
    private String body;
    private int commentCount;
    private List<EntryComment> comments;


@Entity
@Table(name = "comments")
public class Comment{
    private String author;
    private String body;
    private int voteCount;
@实体
@表(name=“article”)
公共类文章{
私有字符串作者;
私有字符串体;
私人帐户;
私人名单评论;
@实体
@表(name=“comments”)
公开课评论{
私有字符串作者;
私有字符串体;
私人国际voteCount;

我想在另一个表中添加注释,而不删除` Article'中的字段
comments
。是否可以使用hibernate注释将注释放在单独的表中?

当然可以。对于字符串和int元素,我建议您在所有元素上使用@Column注释,但是对于注释,请查看c下面的颂歌:

物品类别:

@Entity
@Table(name = "article")
public class Article{
    private String author;
    private String body;
    private int commentCount;

    @OneToMany(mappedBy = "article")
    @LazyCollection(LazyCollectionOption.TRUE)
    private List<EntryComment> comments;

您不应该急于在Comment类中获取文章-当您将迭代来自article类的评论时,这将导致不必要的向后连接到article表。我相信这将在很大程度上取决于应用程序,对我来说,在处理子对象时,我经常需要父对象在这篇文章中,我只是展示了两种选择(从父到子,它是懒惰的,从子到父,它是渴望的)。您可以将所有内容放在一起,但我认为重要的是要表明,指定获取行为实际上是可能的。您是对的,注释将需要对其父级的引用。但它应该是惰性的-在大多数情况下,您在显示注释时不会显示与文章相关的任何内容。文章将是alr已经显示,您感兴趣的是只显示与评论相关联的详细信息。当它是惰性的时,您将在执行此操作时查询文章。当它是急切的时,您将有“选择*从评论加入文章…”与文章表的连接是不必要的。这在很大程度上取决于您使用的应用程序堆栈的类型。如果您使用一些专业的Java EE堆栈,如Spring与webflow的结合,则基本上每个请求都有一个访问数据库的阶段。因此,这将取决于应用程序和应用程序当然,我完全同意在默认情况下(胖客户端,普通Java应用程序),对评论的查询将加入到文章关系中。
@Entity
@Table(name = "comments")
public class Comment{

    @ManyToOne(fetch = FetchType.LAZY)
    private Article article;

    private String author;
    private String body;
    private int voteCount;