繁体   English   中英

如何使用休眠和春季DAO模式在数据库中插入批量数据

[英]How to insert bulk data in database using hibernate and spring DAO pattern

我正在使用Spring DAO +休眠结构处理数据库的应用程序。

我想使用hibernate在oracle数据库中插入大量行(大约20000行),但是使用.save()非常慢。

我了解到可以使用StateLess会话来完成此操作,但是由于所有会话都通过BaseDaoImp类进行管理,因此我不知道如何在此设计模式下创建无状态会话。

如果有人知道如何实施,请提供帮助。

在每次对save()方法的第n次调用之后,添加entityManager.flush()entityManager.clear() 如果使用hibernate,则添加hibernate.jdbc.batch_size并将其设置为等于n。 100也许足够,但这是您的选择。

请参阅: 使用JPA + Hibernate进行大规模插入http://frightanic.com/software-development/jpa-batch-inserts/

答案已经很老了,但是看起来还不错。

试试这个代码片段,它类似于我们在JDBC批处理中使用的方法。

public Long save(HttpServletRequest request) {

**//Further business logic here....**
for ( int i=0; i<count; i++ ) {
                     getEntityManager().persist((ABC) model);

            if ( i > 0 && i % 2500== 0 ) {
                               getEntityManager().flush();
                               getEntityManager().clear();
                          }
                  }
                     tx.commit();
                   ((EntityManager) session).close();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM