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

2024-03-31

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

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

目标是:提交每条 N 条记录,并不是每条记录在制作时repository.save() action.

从现在起我尝试过的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。

UPDATE

这是实现:

@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> {

}

就我而言,即使使用这些配置,批量插入也无法正常工作。

事实证明,如果实体使用GenerationType.IDENTITY标识符生成器,​​Hibernate 将默默地禁用批量插入/更新。

也许这会帮助其他人。

Source: http://kyriakos.anastasakis.net/2015/06/12/batch-inserts-with-spring-data-and-mysql/ http://kyriakos.anastasakis.net/2015/06/12/batch-inserts-with-spring-data-and-mysql/

我在用着:

  • mysql 5.6
  • 春季启动2.1.9
  • JPA 和休眠
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 和 Spring Data JPA 的批量插入不起作用 的相关文章

随机推荐