場景:
輸入:一個大的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查看一下