[JPA] Batch Insert
·
Spring Framework/JPA
Spring Boot, Spring Data JPA, PostgreSQL 환경에서 대량 데이터를 삽입할 때 사용할 수 있는 여러 방법의 성능을 비교개별 엔티티 저장(Repository.save())엔티티 컬렉션 저장(Repository.saveAll())JDBC 템플릿을 활용한 배치 삽입 (batchInsert())PostgreSQL JDBC 드라이버의 reWriteBatchedInserts 옵션과 배치 크기의 영향엔티티와 데이터를 저장하는 메서드는 다음과 같다. ID 생성 전략을 IDENTITY로 설정하면 batch 옵션이 동작하지 않으므로 주의해야 한다.@Entity@SequenceGenerator( name = "issued_coupon_code_gen", sequenceN..
[JPA] orphanRemoval, CasecaseType.REMOVE
·
Spring Framework/JPA
orphanRemoval과 casecade는 @OneToMany에서 삭제 동작을 제어하는 두 가지 옵션이다. orphanRemoval=true, CascadeType.REMOVE 두 옵션 모두 부모-자식 관계에서 자식 엔티티를 삭제하는 설정이지만 차이가 있다.casecadecasecade는 부모 엔티티의 상태 변화가 자식 엔티티에 전파되도록 설정하는 옵션으로 부모 엔티티가 생성/수정/삭제 될 때 자식 엔티티에도 부모 엔티티를 따라 데이터베이스에 생성/수정/삭제되록 설정한다. 이 옵션에 지정할 수 있는 다양한 CascadeType이 있다.PERSIST: 비영속 상태의 부모 엔티티를 영속상태로 변경할 때 자식 엔티티도 영속 상태로 변경MERGE: 준영속 상태의 부모 엔티티를 영속상태로 변경할 때 자식 엔티티..