【发布时间】:2018-11-14 14:24:46
【问题描述】:
我知道关于这个论点有很多类似的问题,但我真的需要一个可行的解决方案。
我正在尝试配置 Spring Boot 和 Spring Data JPA,以便批量插入。
目标是:提交每条 N 条记录,而不是在进行 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×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> {
}
【问题讨论】:
-
你应该提供你的代码你是如何尝试实现这个的......
-
我只使用了 CrudRepository 接口,并使用 Eclipse 插件生成了@Entities。它可以工作,但它会提交每条记录
-
只显示你的服务代码...)
-
我已经用实现的 sn-p 编辑了问题
标签: spring-boot spring-data-jpa bulkinsert