DB/JPA

    대리키 사용의 장단점

    대리키란 기존에 있던 식별자들 대신 추가로 생성한 식별자를 말한다. 대리키의 개념은 인조키를 포함하는 개념이며 테이블 설계 시 대리키 사용여부는 많은 영향을 끼칠수 있는 주제다. 보통 우리는 다대다 연관관계 설계 시 중간에 피벗테이블을 만들어 관리한다. 이때 대리키를 사용하는 것이 좋을까 사용하지 않는 것이 좋을까? 대리키를 사용 안 하는 경우 위와 같이 외래키들로 이루어진 복합키가 기본키가 된다. 부모 테이블의 기본키가 존재해야 자식 테이블의 기본키가 존재하는 구조이며 기존의 데이터를 재활용하는 것이기 때문에 데이터 포맷 또한 같다. 따라서 대리키 사용을 하지 않는다면 데이터 무결성을 보장을 수 있다는 것이 가장 큰 장점이다. 마냥 장점이 존재하지만은 않는다. 위 구조는 테이블 확장 시 복합키들을 모두..

    MapStruct 참고 자료와 관련 이슈

    메이븐 저장소 MapStruct https://mvnrepository.com/artifact/org.mapstruct/mapstruct MapStruct와 Lombok에 대한 이슈 (MapStuct 의존성 추가 설정들이 Lombok보다 먼저 선언되야함) https://mapstruct.org/faq/ MapStruct @Builder 지원 https://mapstruct.org/news/2018-07-15-mapstruct-1_3_0_Beta1-is-out-with-builder-support MapStruct의 Lombok 사용에 관한 공식 홈페이지 예시 코드 https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-lombok Ma..

    @Entity와 @Builder

    참 골 때리는 어노테이션이기에 정리할 필요성이 있어 포스팅을 한다. 먼저 @Builder는 빌더 패턴을 사용하여 객체 생성을 할수 있게 도와주는 어노테이션이다. 문제는 해당 어노테이션이 클래스의 생성자 유무에 따라 동작을 다르게 하는데 있다. 위 내용은 Lombok의 공식문서의 @Builder의 생성자에 관한 내용이다. Finally, applying @Builder to a class is as if you added @AllArgsConstructor(access = AccessLevel.PACKAGE) to the class and applied the @Builder annotation to this all-args-constructor. This only works if you haven't w..