性能插入通过JPA Spring-boot与Oracle数据库



首先感谢您的宝贵时间。

我试图通过JPA(spring-boot)插入数据到数据库,该项目正在使用Oracle.

目前,插入5000条记录,使用repository.save(…)repository.saveAll(…)需要很长时间。

I triedbatch_size

代码配置:

Properties properties = new Properties();
properties.setProperty("hibernate.ddl-auto", "none");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle12cDialect");
properties.setProperty("hibernate.show_sql", "true");
properties.put("hibernate.jdbc.batch_size", 5);
properties.put("hibernate.order_inserts", true);
properties.put("hibernate.order_updates", true);
setJpaProperties(properties);

我创建sql查询一次插入几行执行语句。

INSERT ALL INTO table(...)...

我希望有更好更有效的方法

那么,你能给我一个解决方案吗?

非常感谢!!!!

Batch_size: 1000当实体数为1000时,则:repository.saveAndFlush();然后调用下一批。

另一个方法可以在批处理保存中直接调用EntityManager持久化。如:

public int saveDemoEntities(List<DemoEntity> DemoEntities) {
long start = System.currentTimeMillis();
int count = 0;
for (DemoEntities o : DemoEntities) {
entityManager.persist(o);
count++;
if (count % BATCH_COUNT == 0) {
entityManager.flush();
entityManager.clear();
}
}
entityManager.flush();
entityManager.clear();
return count;
}

相关内容

  • 没有找到相关文章

最新更新