Как сделать efficient bulk insert в JPA/Hibernate?

Senior
268 просмотров
AFK Offer AI

Naive saveAll() делает N INSERT запросов. Для bulk insert: 1) hibernate.jdbc.batch_size=50 — Hibernate группирует INSERT в batch. 2) spring.jpa.properties.hibernate.order_inserts=true — группирует по типу entity для батчинга. 3) flush и clear каждые N записей чтобы не накапливать в памяти. 4) @GeneratedValue(strategy=SEQUENCE) — IDENTITY генераторы отключают batch insert. 5) EntityManager.persist() в loop с flush/clear лучше чем saveAll(). Для максимальной скорости — JDBC batch или COPY в PostgreSQL.

Следующий вопрос

Как настроить structured logging с Logback в Java?