插入对象列表java

时间:2017-11-26 19:47:33

标签: java performance hibernate

我尝试在数据库中持有多个寄存器来读取包含多行的文件

我使用forech来读取文件

中包含的对象列表
logs.stream().forEach(log -> save(log));

private LogData save(LogData log) {
    return repository.persist(log);
}

但是插入很慢

我有办法加快插入速度吗?

3 个答案:

答案 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行。