一括挿入を行う必要があります。追加するIDを必要とします。これは私が何をしているのかを示す基本的な例です(これは明らかにパフォーマンスにとって恐ろしいことです)。私はこれを行うもっと良い方法を探しています。場合上記持続にidsが必要なSpring/Hibernate経由の一括挿入
public void omgThisIsSlow(final Set<ObjectOne> objOneSet,
final Set<ObjectTwo> objTwoSet) {
for (final ObjectOne objOne : objOneSet) {
persist(objOne);
for (final ObjThree objThree : objOne.getObjThreeSet()) {
objThree.setObjOne(objOne);
persist(objThree);
}
for (final ObjectTwo objTwo : objTwoSet) {
final ObjectTwo objTwoCopy = new ObjTwo();
objTwoCopy.setFoo(objTwo.getFoo());
objTwoCopy.setBar(objTwo.getBar());
persist(objTwoCopy);
final ObjectFour objFour = new ObjectFour();
objFour.setObjOne(objOne);
objFour.setObjTwo(objTwoCopy);
persist(objFour);
}
}
}
は、内部IDとそれに基づくバルク挿入を取り戻すの最適化方法はあり
sessionFactory.getCurrentSession().saveOrUpdate();
を呼び出す方法は?
ありがとうございます!
更新:それはJustinKSU
import javax.persistence.*;
@Entity
public class ObjectFour{
@ManyToOne(cascade = CascadeType.ALL)
private ObjectOne objOne;
@ManyToOne(cascade = CascadeType.ALL)
private ObjectTwo objTwo;
}
//そして、あなたはただ見ていると仮定すると
この例がありますか?注釈と適切なカスケードの意味がわかりません。 – user973479
もし私がobjFourを永続化しようとすると(理論上は他のものが残る)、org.hibernate.PropertyValueException:ヌルまたは一時的な値を参照するnull以外のプロパティを参照します。 – user973479
XMLまたはアノテーションを使用してHibernateを構成していますか? – JustinKSU