Java 提高查询响应时间JPA Spring Boot(使用preivous select进行批插入)
我想知道做以下事情的最佳方法是什么:Java 提高查询响应时间JPA Spring Boot(使用preivous select进行批插入),java,spring,spring-boot,hibernate,jpa,Java,Spring,Spring Boot,Hibernate,Jpa,我想知道做以下事情的最佳方法是什么: 客户端将100条记录的json发送到spring引导应用程序,以插入数据库 但是在插入之前,我必须执行一个查询来验证100条记录中每条记录的一些数据。然后插入 我目前有: for(int i= 0; i < productos.size(); i++) { productos.get(i).setIdvehiculo(productoRepository.findTesting("49878&qu
- 客户端将100条记录的json发送到spring引导应用程序,以插入数据库
- 但是在插入之前,我必须执行一个查询来验证100条记录中每条记录的一些数据。然后插入
for(int i= 0; i < productos.size(); i++) {
productos.get(i).setIdvehiculo(productoRepository.findTesting("49878", 3)); // ----> NATIVE QUERY EXECUTION TAKES 100ms I THINK
productoRepository.save(productos.get(i)); // ----> INSERT
}
//productoRepository.saveAll(productos);
entityManager.flush();
entityManager.clear();
for(int i=0;i我认为本机查询执行需要100毫秒
productoRepository.save(productos.get(i));//--->INSERT
}
//productoRepository.saveAll(productos);
entityManager.flush();
entityManager.clear();
这需要10秒。。。执行选择和插入操作。100条记录,10秒,不是很长吗?不要在for循环中插入1:1,只需在那里构建模型并将该模型添加到ArrayList中,完成记录处理后,在循环外调用saveAll(productos list)。
- 尝试启用二级缓存。这将缩短验证时间。根据数据的重要性,还可以在应用程序级别缓存实体
- 创建事务以
实体。这将允许数据库利用并发控制保存
- 查看是否可以更改体系结构以启用队列(可以是Kafka Q),另一个应用程序使用该Q来写入数据库
findTesting
成本会降低。检查链接。