Member와 Order에 LAZY 설정을 해도 순환참조가 발생하는게 맞나요?
315
投稿した質問数 13
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]



양쪽에 LAZY로 설정되어 있는것 같은데
맴버를 조회하면 ORDER와 MEMBER가 무한으로 탑니다.
( 주문까지 진행한 상태 )
그게 현재 진도에서 맞는 상태인지 궁금합니다.
(다음 강의에 설명 나오는지 모름)
回答 3
0
안녕하세요. ㅎ님, 공식 서포터즈 David입니다.
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명
링크: 공식 서포터즈
링크: 자주하는 질문
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용과 관련하여 순환 참조로 인한 문제가 발생하는 상황과 이를 해결하는 방법에 대해서는 다음 강의 자료가 도움이 될 것 같습니다. 순환 참조 문제는 객체 간 서로를 참조함으로써 발생하는 문제로, 주로 양방향 연관관계에서 자주 볼 수 있습니다. JPA에서 LAZY 로딩을 사용함에도 불구하고 순환 참조가 발생하는 경우, JSON 변환 시 무한 루프가 발생할 수 있으며, 이를 방지하기 위한 몇 가지 기법들이 존재합니다.
DTO 사용: Entity를 직접 반환하지 않고, 필요한 데이터만을 담은 DTO(Data Transfer Object)를 사용하여 응답을 구성합니다. 이 방법은 순환 참조가 발생할 가능성을 원천적으로 차단합니다.
@JsonIgnoreProperties or @JsonIgnore 사용: 순환 참조가 발생하는 필드에 대해 직렑적으로 JSON으로 변환되지 않도록 설정합니다. Jackson 라이브러리를 사용하는 경우, 양쪽 entity에 어노테이션을 추가하여 순환 참조를 방지할 수 있습니다.
@JsonManagedReference, @JsonBackReference 사용: Jackson 라이브러리를 사용하는 경우, 참조 관계의 주체가 되는 쪽에
@JsonManagedReference, 종속적인 쪽에@JsonBackReference를 붙여 순환 참조를 방지할 수 있습니다.
질문에서 언급한 LAZY 로딩 설정에도 불구하고 순환 참조 문제가 발생한다면, 데이터를 JSON으로 변환하는 과정에서 서로 참조하는 구조 때문에 발생할 수 있습니다. LAZY 로딩은 연관된 엔티티를 실제 사용하는 시점까지 로딩을 지연시키는 JPA의 설정일 뿐, JSON 직렬화 과정에서의 순환 참조 문제를 직접 해결하기 위한 것은 아닙니다.
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 강의의 질문 중 이와 비슷한 주제로 나온 질문이 있으나, 직접적인 해결책이나 상세한 설명보다는 질문자의 문제와 일치하지 않는 다른 상황에 대한 답변이 주를 이룹니다. 따라서, 강의 내용을 순차적으로 따라가시면서 이 문제에 대한 해결 방안이 나올지 확인하시기를 권장합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의 관련 외 질문입니다.
0
68
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
92
1
BeanCreationException
0
91
3
Update 후 UpdateMemberResponse 매핑할 때
0
50
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
101
2
페이징 + 검색조건 관련해서 질문드립니다.
0
70
1
Query Dsl Q파일 질문입니다.
0
84
1
루트 쿼리라는것은
0
60
1
메서드를 분리하는 기준
0
66
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
111
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
86
2
fetch join과 영속화와 OSIV의 관계
0
87
2
Distinct 사용 전 결과에 대한 의문
0
117
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
60
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
78
2
dto 필드 속 엔티티 여부
0
60
1
뷰템플릿 사용 시
0
77
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
86
1
DTO 대신 Form 사용은 안되나요?
0
138
1
OSIV ON 상태일 때
0
96
1
fetch join VS fetch join 페이징 궁금증
0
187
2
양방향 연관관계 알아보는 법?
0
107
1
16강 17강 간단 정리 이게 맞을까요 ?
0
166
2

