阅读量:4
Hibernate提供了批量保存数据的方法,可以通过以下两种方式实现:
- 使用Session的
saveOrUpdate()
方法:
Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); for (Object object : objects) { session.saveOrUpdate(object); } transaction.commit(); session.close();
- 使用Session的
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等问题。