Spring Boot和Spring Data JPA的批量插入不起作用

我知道关于这个论点有很多类似的问题,但是我确实需要一个可行的解决方案。

我正在尝试配置Spring Boot和Spring Data JPA以便批量批量插入。

目标是: ,而不是执行repository.save()操作时 。

从现在开始我一直在尝试application.properties

spring.jpa.properties.hibernate.jdbc.batch_size=100

spring.jpa.properties.hibernate.order_inserts=true

spring.jpa.properties.hibernate.order_updates=true

spring.jpa.properties.hibernate.generate_statistics=true

但是没有成功。我已经监视了数据库,并且记录是一张一张地保存在表中,而不是像我配置的那样一张白一张地保存在100张中。

更新

这是实现:

@Component

public class BulkInsert {

@Autowired

MyRepository repository;

public void process() {

PodamFactory podamFactory = new PodamFactoryImpl();

for(int i=0;i<10000;i++) {

MyEntity myEntity = podamFactory.manufacturePojo(MyEntity.class);

repository.save(myEntity);

}

}

}

这是实体:

@Entity

@Table(name="MYTABLE")

@NamedQuery(name="MyEntity.findAll", query="SELECT m FROM MyEntity m")

public class MyEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Column(name="DESCRIPTION")

private String description;

@Id

@Column(name="ID")

private String id;

public MyEntity() {

}

// getters and setters

}

和存储库:

public interface MyRepository extends CrudRepository<MyEntity, String> {

}

回答:

尝试像这样更改代码:

public void process() {

PodamFactory podamFactory = new PodamFactoryImpl();

List<MyEntity> myEntities = new ArrayList<>(10000);

for(int i = 0; i < 10000; i++) {

myEntities.add(podamFactory.manufacturePojo(MyEntity.class));

}

repository.save(myEntities); // for Spring Boot prior 2.0

// repository.saveAll(myEntities); - for Spring Boot since 2.0

}

PS别忘了打开spring.jpa.show-sql以查看结果

以上是 Spring Boot和Spring Data JPA的批量插入不起作用 的全部内容, 来源链接: utcz.com/qa/434248.html

回到顶部