我尝试在数据库中持有多个寄存器来读取包含多行的文件
我使用forech来读取文件
中包含的对象列表logs.stream().forEach(log -> save(log));
private LogData save(LogData log) {
return repository.persist(log);
}
但是插入很慢
我有办法加快插入速度吗?
答案 0 :(得分:0)
你的方式花了很长时间,因为你逐个元素,所以你有时间到数据库,我想使用Batch processing来代替 N事务使用一个事务 ,因此persist
方法可以是:
public void persist(List<Logs> logs) {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
logs.forEach(log -> session.save(log));// from the comment of @shmosel
tx.commit();
session.close();
}
答案 1 :(得分:0)
使用批量插入,Google“Hibernate批量插入”或替换为ORM的任何名称,如果它不是休眠状态。
https://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm
答案 2 :(得分:0)
要在每一行插入使这个程序缓慢,为什么你不想收集n行,并一次插入n行。