3

我有这样的结构:

// 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);

如果我想获得更高的性能,哪个更好?

谢谢

4

1 回答 1

1

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

2.仅更新子对象

会更高效。

但是,定量地确定这一点的唯一方法是打开 Hibernate show_sql,捕获解决方案 1 和解决方案 2 的 SQL,为每个解决方案运行解释计划,然后比较生成的解释计划。

您可能会得到不同的结果,具体取决于父对象和Parent.children集合中的其他子对象中的其他更改/未更改。在为解释计划捕获 SQL 时,您可能想尝试不同的场景。

于 2012-09-07T20:02:29.220 回答