场景:
输入:一个大的json数组,将每个数组中的对象插入到数据库中(这个大的json数组中有129个对象)
问题:
未使用批量插入时,使用的是spring boot 2.2.0,spring data jpa,默认使用hikari cp连接池
hikariPool报错:
HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@3e471d67
(No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
以及
HikariPool-1 - Connection is not available, request timed out after 30049ms.
发现其都是在插入129个对象的时候发生
原因:
猜测就是插入的时候,connection不够用造成的
解决方法:
在sping data jpa中实现批量插入
业务代码:
List<Hospital> data =JSON.parseArray(msgBody, Hospital.class); hospitalRepository.saveAll(data);
配置:(重要)
spring.jpa.properties.hibernate.jdbc.batch_size=150
配置了druid查看一下