Java Hibernate:更新子对象

Java Hibernate:更新子对象,java,hibernate,Java,Hibernate,我有这样的结构: // all objects have valid mapping to database public class Child { private int id; private String name; } public class Parent { private int id; private String name; private List<Child> chidlren; } //所有对象都具有到数据库的有效映射 公营儿

我有这样的结构:

// all objects have valid mapping to database
public class Child {
   private int id;
   private String name;
}
public class Parent {
   private int id;
   private String name;
   private List<Child> chidlren;
}
//所有对象都具有到数据库的有效映射
公营儿童{
私有int-id;
私有字符串名称;
}
公共类父类{
私有int-id;
私有字符串名称;
私人名单儿童;
}
我必须更新父级A中的特定子级B

有两种方法:

  • 更新集合中的子字段并更新整个对象:
    Parent temp=dao.getParent(id)
    temp.getChildren.get(0.setName('test')
    dao.updateParent(temp);

  • 仅更新子对象:
    Child temp=dao.getChild(id)
    温度设置名称(“测试”)
    dao.updateChild(临时)

  • 如果我想获得更好的表现,哪一个更好


    谢谢

    从表面上看,我猜第二种解决方案

    2.只更新子对象

    会更有效

    但是,从数量上确定这一点的唯一方法是打开Hibernate的
    show_sql
    ,捕获解决方案1和解决方案2的sql,为每个解决方案运行解释计划,并比较生成的解释计划


    根据父对象和
    Parent.children
    集合中的其他子对象中更改/未更改的内容,您可能会得到不同的结果。在为解释计划捕获SQL时,您可能希望尝试不同的场景

    你试过分析吗?我认为它们几乎是一样的,因为hibernate做了很多事情,如果优化的话。我的观点是,即使使用hibernate优化,第二种解决方案也会更快。当然,如果您没有任何其他疑问。我只是想听听别的想法