Hibernate:更新子对象

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

如果我想要更好的性能,哪种方法更好?

谢谢


你尝试过分析了吗?我认为它们应该差不多,因为 Hibernate 做了很多优化工作。 - RNJ
我的观点是,即使使用了Hibernate优化,第二种解决方案仍然会更快。当然,如果您没有任何其他的查询。我只是想听听其他的想法。 - nKognito
1个回答

1
表面上看,我认为第二种解决方案会更高效。
然而,要定量确定这一点的唯一方法是打开Hibernate的show_sql,捕获解决方案1和解决方案2的SQL,对每个解决方案运行一个Explain Plan,并比较结果。您可能会得到不同的结果,具体取决于父对象中发生了什么其他变化/未发生变化以及Parent.children集合中的其他子项。在捕获Explain Plans的SQL时,您需要尝试不同的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接