JPA (3) 썸네일형 리스트형 [JPA] 양방향 매핑 관계 로딩 방법 별로 살펴보기 (N+1 문제는 도대체 언제?) 개인적으로 너무 헷갈리고, 진심인데 블로그 포스트마다 내용이 다른 것 같기도 하다. 그냥 직접 하면서 최대한 가능한 상황들을 정리해보려고 한다. 더 헷갈리게만 만드는 장황한 설명따윈 없이, 그냥 내가 정리하고 싶기도 해서 특정 CASE 에 대한 결과만 정리하니, 참고하실 분들은 결과만 참고하시면 좋을 것 같다. 기본적으로 다음과 같이 클래스들이 있다. 이하로 정리되는 내용은 의 제목으로 정리된다. @Entity @Getter @NoArgsConstructor @Table(name = "groups") public class Group { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "group", fetch.. [JPA] OSIV 만 믿었다가 Lazy 로딩에 발등찍힌 썰 작업을 하다가 처음 보는 문제점을 확인해서 로깅 기록을 남겨보게 되었다. 요즘 글 많이 쓰기 힘들어서 문제 설명만 하고 빨리빨리 진행하겠다. 이 로직만 정말 하루 종일 작업했다. 1. 문제 상황 Group 과 GroupCategory, Category 가 있다. 카테고리에는 categoryValue 가 있고, Group 과 Category 는 N:N 관계이며 GroupCategory 테이블이 둘을 연결해준다. Group 을 검색하는 로직을 만들고 있을 때, JPQL, 1:N 의 fetchJoin 에서의 Paging 처리 문제 등등으로 인해서, GroupCategory 와 Category 를 fetch Join 하지 못한채 원하는 Group List 를 가져온 상황이다. (이럴 수밖에 없었음.. 해쉬태그 .. [JPA] 연관 객체 불러오기.. Fetch Join 정말 괜찮을까? 결론부터 말하자면 약간 뻘짓한 글이다. 그래도 긍정적으로 본다면 고민을 해봤다는 의의는 있으니.. 초보자의 수준에서 한 번 고민을 공유한다고 생각하면 될 것 같다. (1) 개요 서비스단을 개발하다 고민하게 된 부분이 있어서, 정리해보면서 결론을 만들어 나가보기로 했다. 우선 개요는 다음과 같다. Group 객체가 있고, Group 활동 안에 게시물인 Post 객체가 있으며, Post 에는 댓글인 Comment 객체가 있는 다음과 같은 상황이다. 아래에는 표시되어 있지 않지만, Member 객체가 당연히 있으며, Member 와 Group 사이에는 현재 상태가 기록되고, [강퇴 / 휴면 / 활동] 의 세 가지 상태로 관리된다. 이와 같은 관계는 많이 발생하는 일반적인 상황으로, 모두 비식별 관계이다. 이 .. 이전 1 다음