我有这样的结构:
// 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.
有两种方法:
更新集合中的子字段并更新整个对象:
Parent temp = dao.getParent(id);
temp.getChildren.get(0).setName('test');
dao.updateParent(temp);
仅更新子对象:
Child temp = dao.getChild(id);
temp.setName('test');
dao.updateChild(temp);
如果我想获得更多性能,哪一个更好?
谢谢
答案 0 :(得分:1)
从表面上看,我推测第二种解决方案
2.仅更新子对象
会更高效。
然而,您定量确定这一点的唯一方法是启用Hibernate的show_sql
,捕获解决方案1和解决方案2的SQL,为每个解决方案运行解释计划,并比较生成的解释计划。
您可以获得不同的结果,具体取决于父对象和Parent.children
集合中的其他子项中其他更改/未更改的内容。捕获SQL for Explain Plans时,您可能希望尝试不同的方案。