我正在开发一个应用程序,它使用SpringDAO hibernate结构来处理数据库。
我想使用hibernate在oracle数据库中插入大量行(大约20000行),但是使用。save()非常慢。
我了解到使用无状态会话可以做到这一点,但因为所有会话都是通过BaseDaoImp类管理的,所以我不知道如何在这种设计模式中创建无状态会话。
如果有人知道如何实现这一点,请提供帮助。
试试这个代码片段,它类似于我们在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();
}
添加entityManager。flush()
和entityManager。在每次对
。如果使用hibernate,则添加save()
方法进行第n次调用后,清除()hibernate.jdbc。batch_size
并将其设置为等于n。100可能就足够了,但这是您的选择。
请参阅:使用JPA Hibernate进行大规模插入或http://spring anic . com/software-development/JPA-batch-inserts/
答案很古老,但似乎很管用。
问题内容: 我有一些每月的天气数据,我想插入到Oracle数据库表中,但是我想成批插入相应的记录,以提高效率。谁能建议我如何用Python做到这一点? 例如,假设我的表有四个字段:工作站ID,日期和两个值字段。记录由工作站ID和日期字段(复合键)唯一标识。我将为每个站点插入的值将保存在一个列表中,其中包含X整整年的数据值,因此,例如,如果有两年的值,则值列表将包含24个值。 如果我想一次插入一条记
本文向大家介绍使用JDBC在MySQL数据库中如何快速批量插入数据,包括了使用JDBC在MySQL数据库中如何快速批量插入数据的使用技巧和注意事项,需要的朋友参考一下 使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: Adds a set of parameters to t
我创建了一个向MySql数据库插入数百万个值的程序。我读到过有关批插入的文章,它将优化我的程序并使其更快,但当我尝试这样做时,它以同样的方式工作。我没有将每个值插入数据库,而是每次将500个值保存在一个列表中,然后将它们插入一个大循环中,如下所示: 然后我删除列表中的所有值,并再次开始收集500个值。它不应该工作得更好吗? 我的插入代码是: 我有一些问题: 1。为什么当我批量插入时它不能更快地工作
问题内容: 使用hibernate时,当我尝试使用以下方式启用批量插入时 我得到以下输出: 然后这个: 基本上没有。 我是否缺少设置? 问题答案: 原来在这种情况下缺少的是: 现在我明白了 频繁得多(任何大于1的值基本上都意味着它成功完成了批量插入)。 hibernate.jdbc.batch_versioned_data也可能有用。 jdbc:mysql:// localhost:3306 /
问题内容: 我正在循环列表并将其插入数据库中,但它得到的更新记录一个接一个。最后我只在列表中的数据库最后一条记录中看到。 输入名称:Linux,Windows,Mac hibernate.cfg.xml: 这里有3次获得循环并插入数据库。但是以某种方式覆盖了这些值。因为我看到sql插入和更新在控制台中运行。 请帮助我将多个行插入数据库。 问题答案: Hibernate文档中有一章非常好的关于批处理
我使用Spring Data、Spring Boot和Hibernate作为JPA提供程序,我想提高批量插入的性能。 我引用这个链接来使用批处理: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch15.html 这是我的代码和应用程序。插入分批实验的属性。 我的服务: 与批处理相关的部分application.properti