web-dev-qa-db-ja.com

Spring BootおよびSpring Data JPAを使用した一括挿入が機能しない

この議論については同様の質問がたくさんあることは知っていますが、実際に機能するソリューションが必要です。

バッチで一括挿入を行うために、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> {

}
5
Alessandro C

次のようにコードを変更してみてください:

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
}

追伸オンにすることを忘れないでくださいspring.jpa.show-sql結果を見る

0
Cepr0

私の場合、これらの構成でも一括挿入が機能しませんでした。

エンティティがGenerationType.IDENTITY識別子ジェネレータ。Hibernateはバッチ挿入/更新をサイレントに無効にします。

多分これは他の人を助けるでしょう。

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

私が使用しています:

  • MySql 5.6
  • 春のブーツ2.1.9
  • JPA&Hibernate
3
Vetras