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を更新する必要があります。

2つの方法があります:

  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番目の解決策は

2.子オブジェクトのみを更新します

よりパフォーマンスが高くなります。

ただし、これを定量的に判断する唯一の方法は、Hibernateをオンにしshow_sql、ソリューション1とソリューション2のSQLをキャプチャし、ソリューションごとにExplain Planを実行し、結果のExplainPlanを比較することです。

親オブジェクトとコレクション内の他の子で他に何が変更されたか、または変更されなかったかによって、異なる結果が得られる可能性がありますParent.children。Explain PlanのSQLをキャプチャするときは、さまざまなシナリオを試してみてください。

于 2012-09-07T20:02:29.220 に答える