Hibernate提供了批量保存數據的方法,可以通過以下兩種方式實現:
saveOrUpdate()
方法:Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
for (Object object : objects) {
session.saveOrUpdate(object);
}
transaction.commit();
session.close();
save()
方法,然后手動調用flush()
方法: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();
注意,第二種方法會在達到批處理大小時強制將數據寫入數據庫,并清除Session中的緩存,以避免OutOfMemoryError等問題。