spring data jpa使用批量插入解决 Failed to validate connection com.mysql.jdbc.JDBC4Connection问题

场景:

输入:一个大的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查看一下

参考:spring data jpa开启批量插入、批量更新

发布了442 篇原创文章 · 获赞 222 · 访问量 115万+

猜你喜欢

转载自blog.csdn.net/u013905744/article/details/102803154
今日推荐