SpringBoot/JPA

    [JDBC] JPA(Read) + jdbcTemplate(Write) 사용하기

    JPA를 사용할 경우 Entity의 Id 생성 전략이 IDENTITY일 경우 INSERT 구문이 실행될 때마다 SELECT 구문이 실행된다. 1개 row 작업의 경우 JPA를 사용함에 있어 큰 이슈가 없지만 대량의 배치성 작업의 경우 성능에 영향을 미친다. 이를 위해서 jdbcTemplate을 이용하여 jdbc의 prepareStatement와 rewriteBathchedStatements 옵션을 사용하여 성능 개선을 이룰수 있다. 그러나 다른 테이블의 데이터를 읽어서 새로운 테이블로 데이터를 migration 하는 경우 대량의 데이터를 한번에 읽을 수 없으므로 일반적으로 페이징 기법을 사용한다. 그러나 jdbc에서 페이지네이션(pagination) 쿼리를 만들기 귀찮아 jpa에서 PageRequest를..

    [Enum] AttributeConverter 구현

    1. Enum Interface import com.fasterxml.jackson.annotation.JsonValue; public interface SampleEnum { @JsonValue String getCode(); } 다음과 같은 SampleEnum 이라는 인터페이스를 작성한다 2. Enum Class import java.util.Arrays; import java.util.NoSuchElementException; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor public enum SampleType implements SampleEnum { SAMPLE_ONE("..