Spring data jpa 批量插入(saveAll)速度慢的问题

问题描述:

项目中使用到了Spring data jpa技术,调用 JpaRepository.saveAll()方法对list中的数据进行插入时,发现速度特别慢,一条条插入,平均每条耗时70ms,这样一个600条的数据,就要耗时42s,简直不能忍!

解决方案:

搜索一番,发现jpa对批量操作是有配置的,增加以下yml配置后,600多条数据基本上瞬间完成,爽歪歪!

spring:
  jpa:
    properties:
      hibernate:
        jdbc:
          batch_size: 500
          batch_versioned_data: true
        order_inserts: true
        order_updates: true

batch_size可以根据自己实际需要设置,如5000条数据,批量处理5000/500=10次即可!

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: Spring Data JPA一个基于 JPA 规范的 Spring 框架的模块,可以简化 JPA 的开发,提供了一些常用的 CRUD 操作。使用 Spring Data JPA,可以通过编写接口的方式来实现数据访问,而无需编写实现类。具体使用方法可以参考 Spring Data JPA 的官方文档。 ### 回答2: Spring Data JPASpring框架中对于Java持久层的集成解决方案,它简化了数据库的访问操作,提供了一系列的接口和方法,使开发者能够更加便捷地进行数据持久化操作。 使用Spring Data JPA的步骤如下: 1. 添加依赖:在项目的pom.xml文件中添加Spring Data JPA的依赖,例如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源:在Spring Boot项目的配置文件中,配置数据库相关的信息,如数据库的URL、用户名、密码等。 3. 创建实体类:使用JPA的注解在Java类中定义实体类,指定表名、字段名、关联关系等信息。 4. 创建Repository接口:创建一个接口,继承自JpaRepository或其他Spring Data提供的Repository接口。该接口将自动根据方法名生成SQL语句,并执行相应的数据库操作。 5. 编写业务逻辑:在Service层中编写业务逻辑,调用Repository接口中的方法进行数据持久化操作。 6. 使用事务管理:在需要执行多个数据库操作的方法上,使用@Transactional注解进行事务管理,确保数据的一致性和完整性。 通过以上步骤,就可以使用Spring Data JPA进行数据库的访问操作了。开发者可以通过调用Repository接口中的方法,如save、findById、findAll等,进行增删改查等操作。Spring Data JPA会自动根据方法名生成相应的SQL语句,并执行数据库操作。 总之,Spring Data JPA的使用简化了数据访问的流程,提高了开发效率,并且提供了较好的扩展性和灵活性,可以满足大部分的数据库访问需求。 ### 回答3: Spring Data JPA一个用于简化数据访问层开发的框架,它可以帮助我们更方便地使用 JPA(Java Persistence API)进行数据库操作。下面是使用 Spring Data JPA 的基本步骤: 1. 添加依赖:在项目的 pom.xml 文件中添加 Spring Data JPA 的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源:在配置文件中配置数据库连接的相关信息,如数据库地址、用户名、密码等。 3. 创建实体类:通过使用 JPA 的注解在实体类上定义表名、字段名等信息,并添加相应的 getter 和 setter 方法。 4. 创建 Repository 接口:创建一个继承自 JpaRepository 的接口,用于对实体类进行 CRUD 操作。不需要实现任何方法,Spring Data JPA 将会在运行时根据方法名自动生成查询语句。 5. 使用 Repository:在业务类中注入 Repository 接口的实例,并调用其方法进行数据库操作。例如,可以使用 save() 方法保存实体对象、使用 findById() 方法根据 ID 查询实体对象等。 除了简化了一些常见的数据库操作之外,Spring Data JPA 还提供了很多有用的特性,如分页查询、排序、自定义查询等。可以通过在 Repository 中定义方法名的方式来实现这些功能。 总的来说,使用 Spring Data JPA 可以大大简化数据库操作的代码量,提高开发效率,并且还可以方便地切换不同的持久化框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值