• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Member와 Order에 LAZY 설정을 해도 순환참조가 발생하는게 맞나요?

24.06.26 17:45 작성 24.06.26 17:47 수정 조회수 65

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]

image.png

image.png

image.png

양쪽에 LAZY로 설정되어 있는것 같은데

맴버를 조회하면 ORDER와 MEMBER가 무한으로 탑니다.

( 주문까지 진행한 상태 )

그게 현재 진도에서 맞는 상태인지 궁금합니다.

(다음 강의에 설명 나오는지 모름)

답변 3

·

답변을 작성해보세요.

0

ㅎ님의 프로필

질문자

2024.06.27

간단한 주문조회 V1: 엔티티 직접 조회 강의에 같은 문제가 발생함을 확인하였습니다. 감사합니다.

0

David님의 프로필

David

2024.06.27

안녕하세요. ㅎ님, 공식 서포터즈 David입니다.

 

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.06.26

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 관련하여 순환 참조로 인한 문제가 발생하는 상황과 이를 해결하는 방법에 대해서는 다음 강의 자료가 도움이 될 것 같습니다. 순환 참조 문제는 객체 간 서로를 참조함으로써 발생하는 문제로, 주로 양방향 연관관계에서 자주 볼 수 있습니다. JPA에서 LAZY 로딩을 사용함에도 불구하고 순환 참조가 발생하는 경우, JSON 변환 시 무한 루프가 발생할 수 있으며, 이를 방지하기 위한 몇 가지 기법들이 존재합니다.

  1. DTO 사용: Entity를 직접 반환하지 않고, 필요한 데이터만을 담은 DTO(Data Transfer Object)를 사용하여 응답을 구성합니다. 이 방법은 순환 참조가 발생할 가능성을 원천적으로 차단합니다.

  2. @JsonIgnoreProperties or @JsonIgnore 사용: 순환 참조가 발생하는 필드에 대해 직렑적으로 JSON으로 변환되지 않도록 설정합니다. Jackson 라이브러리를 사용하는 경우, 양쪽 entity에 어노테이션을 추가하여 순환 참조를 방지할 수 있습니다.

  3. @JsonManagedReference, @JsonBackReference 사용: Jackson 라이브러리를 사용하는 경우, 참조 관계의 주체가 되는 쪽에 @JsonManagedReference, 종속적인 쪽에 @JsonBackReference를 붙여 순환 참조를 방지할 수 있습니다.

질문에서 언급한 LAZY 로딩 설정에도 불구하고 순환 참조 문제가 발생한다면, 데이터를 JSON으로 변환하는 과정에서 서로 참조하는 구조 때문에 발생할 수 있습니다. LAZY 로딩은 연관된 엔티티를 실제 사용하는 시점까지 로딩을 지연시키는 JPA의 설정일 뿐, JSON 직렬화 과정에서의 순환 참조 문제를 직접 해결하기 위한 것은 아닙니다.

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 강의의 질문 중 이와 비슷한 주제로 나온 질문이 있으나, 직접적인 해결책이나 상세한 설명보다는 질문자의 문제와 일치하지 않는 다른 상황에 대한 답변이 주를 이룹니다. 따라서, 강의 내용을 순차적으로 따라가시면서 이 문제에 대한 해결 방안이 나올지 확인하시기를 권장합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

채널톡 아이콘