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等问题。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: mybatis和hibernate有哪些区别