[英]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.