[JPA] API 성능 최적화 하기 (2) - Fetch Join

API 성능 최적화 하기 1편에서 이어지는 내용입니다. 첫번째로 엔티티를 직접 노출하여 멤버의 팀명을 호출하는 API를 만들어보았다. MemberController.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @RestController @RequiredArgsConstructor public class MemberController { private final MemberJpaRepository memberJpaRepository; @GetMapping("/api/v1/members") public List<Member> membersV1() { List<Member> all = memberJpaRepository.findAll(); for (Member member : all) { member.getTeam().getName(); // Lazy 강제 초기화 } return all; } } 아무런 설정을 하지 않고 이대로 API를 호출해보면 다음과 같은 오류 메시지가 나올것이다....

February 5, 2023 · 4 min · bookpark

[JPA] API 성능 최적화 하기 (1) - X to One 연관 관계

X to One 연관 관계의 성능 최적화를 하기위해 먼저 알아야 할 것은 즉시(Eager) 로딩과 지연(Lazy) 로딩의 차이이다. Member.java 1 2 3 4 5 6 7 8 9 10 11 12 13 @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne(fetch = FetchType.EAGER) private Team team; } Team.java 1 2 3 4 5 6 7 8 9 10 11 12 13 @Entity @Getter @Setter public class Team { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); } 간단하게 두 엔티티의 연관 관계를 만들어주고, FetchType....

February 4, 2023 · 2 min · bookpark