JPA 3

[JPA] Fetch join과 pagination

문제상황현재 프로젝트에서는 모집글(Recruit)와 모집글에 들어갈 이미지(RecruitImage)가 1대다의 관계로 존재하며 양방향 매핑이 되어있는 상황이다. N + 1문제를 방지하고자 둘을 fetch join하여 가져오려고 하였다.  위의 쿼리를 실행하였더니 다음과 같은 경고 메시지가 발생하였다.  HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 사실 페이징하려는 대상이 join 이후에 컬럼을 페이징하는 것이 아니라 모집글을 대상으로 하여 페이징을 처리를 하고 다의 관계에 있는 모집글 이미지를 양방향 매핑 조회 객체를 통해 끌어오기 위함이기 때문에, 결과 자체는 원하는 대로 반환이 되었다.  하..

JPA 2024.08.12

[JPA] JPA Entity 생성자의 접근 제어자 with @Builder

개요 아래 글에서는 lombok의 @Builder를 사용하여 JPA Entity 클래스를 구성하는 방법을 살펴 보았다. https://minjun98.tistory.com/103 [JPA] lombok @builder 위치 : Constructor vs Class개요 해당 글에서는 다음과 같은 내용을 다룬다. - @builder의 동작 원리 - lombok의 @builder 어노테이션의 위치 선택 @builder 동작 원리 사용하려는 예시는 jpa entity 클래스를 예시로 한다. 사용하려는 Usminjun98.tistory.com- 오늘은 생성자의 접근 제어자를 어떻게 설정할 것인지에 대해 다룬다.  고려 대상 및 기준 선택 기준은 빌더 패턴을 적용하려는 목적과 관련이 깊으며 new 연산자를 사용하여..

JPA 2024.04.05

[JPA] JPA Entity 클래스에서의 @builder 위치 : Constructor vs Class

개요해당 글에서는 다음과 같은 내용을 다룬다.  - @builder의 동작 원리 - JPA Entity에서의 lombok의 @builder 어노테이션의 위치 선택 @builder 동작 원리사용하려는 예시 User Entity는 다음과 같다. 아직 @builder 패턴은 적용하지 않은 상태이다. @Entity@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull @Column(unique = true) private String email; @..

JPA 2024.04.05