Hibernate のバッチデータ保存の方法

Hibernateでは、バッチ処理でデータを保存する方法が2つあります。

  1. セーブもしくは更新()
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();

for (Object object : objects) {
    session.saveOrUpdate(object);
}

transaction.commit();
session.close();
  1. 保存する
  2. フラッシュ()
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();

int batchSize = 50; // 设置批处理大小
int count = 0;

for (Object object : objects) {
    session.save(object);
    
    if (++count % batchSize == 0) {
        session.flush();
        session.clear();
    }
}

transaction.commit();
session.close();

注意、2番目の方法はバッチサイズに達した時点で強制的にデータベースへ書き込み、OutOfMemoryErrorなどの発生を回避するためセッション内のキャッシュを削除する

bannerAds