Hibernate で大きなデータを挿入または更新しようとしています。350k オブジェクトを含むリストがあり、 Hibernate を使用すると、saveOrUpdate()
すべてのデータを挿入するのに数時間かかります。
この操作には以下のコードを使用しています。私の開発環境はJDK1.4とOracle Databaseです。
public void saveAll(List list)throws HibernateException{
Session session = HibernateUtil.getEYSSession();
Iterator it = list.iterator();
int i = 0;
while(it.hasNext()){
i++;
Object obj = it.next();
session.saveOrUpdate(obj);
if (i % 50 == 0) { session.flush(); session.clear(); }
}
}
私はバッチ更新を使用しており、hibernate.jdbc.batch_size
プロパティ 50 も設定していますが、役に立ちませんでした。
私のオブジェクトは別のオブジェクトと 1 対 1 の関係にあるため、この場合 StatelessSession を使用すると問題が発生する可能性があります。StatelessSession は構成されたオブジェクトにカスケードしないためだと思います。
saveOrUpdate()
この場合、操作のパフォーマンスを向上させる方法について何かアイデアはありますか?
ありがとう。