23.07.04 11:25 작성
·
427
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요 강의 잘 듣고 있습니다.
강의를 듣다가 궁금증이 생겨 질문 드립니다.
양방향 연관관계의 설정이 언제 필요할지 생각을 해보았는데 게시글과 댓글의 일대 다 관계에서
게시글을 조회할때 댓글이 같이 조회되는것을 원하는 경우가 있을 것 같습니다. 그렇다면 이전강의에 말씀하셨던 무한 루프(?)에 빠질 수 있을 것 같은데요. 아마 이걸 순환참조라고 말한다고 알고 있습니다.
그러면 애초에 댓글은 댓글대로 따로 조회하고
게시글을 조회할때 댓글 조회하는 방식 즉 연관관계의 주인이 아닌곳에서 리스트를 조회하려고 하는 방식은 안쓰는것이 좋은것인가요?
답변 1
0
안녕하세요. //님, 공식 서포터즈 y2gcoder입니다.
질문해주신 부분을 정확하게 이해했는지는 모르겠습니다.
게시글을 조회할 때 댓글 목록을 같이 조회하는 곳에서 무한 루프가 발생할 수 있다고 생각하신 이유에 대해 조금만 더 설명해주시면 감사하겠습니다!
제가 임의로 생각해봤을 때, 사실 게시글 목록을 조회하면서 각 게시글들의 댓글 목록을 같이 조회하는 경우는 사실 많지 않은 것 같습니다. 실제로는 대부분 게시글 상세를 들어가면서 해당 게시글의 상세정보와 댓글 목록을 보는 화면들이 많고, 실제로 저는 구현할 때 게시글 id로 게시글 상세 정보를 불러오는 API 와 게시글 id로 게시글의 댓글 목록을 불러오는 API를 따로 분리해서 구현했던 것 같습니다. 제 개인적인 실무 경험으로는 이렇게 구현하기도 했다는 점을 말씀드리고 싶었습니다.
같이 조회하는 것도 게시글 단건에 대한 댓글 목록 조회라면 사실 큰 상관이 없고 게시글 목록 조회에서 댓글 목록 조회도 쿼리를 잘 작성하신다고 하면 또 괜찮다고 생각합니다(해당 요구사항이 필요하다는 가정 하에). 해당 쿼리 최적화와 관련된 부분은 영한님의 JPA 활용 2편에 자세하게 소개되어있으니 참고하시면 많은 도움이 되실 것 같습니다 :)
감사합니다.
2023. 07. 04. 15:34
Dto 역할을 하는 게시글 Response클래스를 만들어서 반환하려 했던것으로 기억합니다.
PostResponse의 생성자로 Post 엔티티를 변환해서 반환하는 방식이었습니다.
이 부분도 강의를 들으면서 조금 이해가 안갔는데 "나는 ResponseDto로 반환했는데도 왜 순환참조가 났었지..?" 하는 생각이 들더라구요 ..ㅠㅠ 원래 Dto로 변환해서 조회하면 순환참조 문제에서 벗어나야하는게 정상인가요?
2023. 07. 04. 13:35
답변 감사합니다! 구현 방식에 대한 부분은 이해가 됐습니다!
다만 순환참조가 일어날것이라고 생각한 이유는 다대일 양방향 연관 관계에서
1(EX : 게시글) 쪽에서 조회를 할때 다(EX :댓글)에 해당하는 부분을 조회하며 리스트 형태로 반환하려고 하면 강의에서 본 순환참조가 일어나서 StackOverFlow가 발생했고 이를 @Jsonignore 어노테이션을 사용해서 순환참조를 끊어주었던 경험이 떠올라서 질문드렸습니다.