Hibernate:更新子对象

时间:2012-09-07 17:17:45

标签: 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;
}

我必须更新父母A中的特定孩子B.

有两种方法:

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

  2. 仅更新子对象:
    Child temp = dao.getChild(id);
    temp.setName('test');
    dao.updateChild(temp);

  3. 如果我想获得更多性能,哪一个更好?

    谢谢

1 个答案:

答案 0 :(得分:1)

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

  

2.仅更新子对象

会更高效。

然而,您定量确定这一点的唯一方法是启用Hibernate的show_sql,捕获解决方案1和解决方案2的SQL,为每个解决方案运行解释计划,并比较生成的解释计划。

您可以获得不同的结果,具体取决于父对象和Parent.children集合中的其他子项中其他更改/未更改的内容。捕获SQL for Explain Plans时,您可能希望尝试不同的方案。