首先感谢您的宝贵时间。
我试图通过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;
}