私は多くのPersonエンティティにマップするHouseエンティティを持っているとしましょう。私は20人の居住者を持っている既存の家を読み込みます。HibernateはsaveOrUpdateの呼び出しで望ましくないSELECTを実行しています
beginTransaction();
House house = houseDao.find(1L);
commitTransaction();
後のコードでは、私はその後、家に新しい人を追加することができます。
...
List<Person> people = house.getPeople();
people.add(new Person("Dilbert"));
....
私が呼び出します
session.saveOrUpdate(house);
Hibernateは21個のクエリを実行:1にしますハウスを選択し、ハウス内の既存の人物をそれぞれ20人ずつ選択します。
私はそれが自分のところでは小さな問題だと確信していますが、このような状況でデータベースに大きな被害を与えずに新しい人物を家に追加できるようにするにはどうすればよいですか?
これはすべて同じセッション内で実行されます。
申し訳ありませんが、私のポストでは、私はSetとあなたのサンプル使用Listを使用していることを認識しました。 SetからListに切り替えることができます。 – celias
ここでは、「ハウス」ではなく「人物」を維持することを提案しています。 +1 –
brilliant - 感謝のセリア。まさに私が探していたもの。 – digiarnie