인프런 커뮤니티 질문&답변

maurizio님의 프로필 이미지
maurizio

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

간단한 주문 조회 V1: 엔티티를 직접 노출

rest일때만 무한 루프 도는 이유가 궁금합니다.

작성

·

556

2

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)

  1. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

    [질문 내용]
    그냥 컨트롤러에서 model에 담아서 조회할떄는 무한루프가 안도는데 json으로 반환할떄는 왜 무한로프 도는지가 궁금합니다.

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. maurizio님

JSON 직렬화를 처리하는 라이브러리는 JSON을 만들기 위해서 A -> B, B -> A를 참조하는 경우에는 모든 참조를 순환하게 됩니다.

반면에 MODEL에 담아서 조회할 때는 MODEL에 담긴 객체의 참조를 개발자가 직접 선택하게 됩니다. 따라서 이런 문제가 발생하지 않습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요.

HTTP 요청에 대한 응답으로 JSON을 반환할 때 무한 루프가 발생하는 이유는 일반적으로 객체 간 참조 관계 때문입니다. JSON은 객체를 텍스트로 표현하는 형식이기 때문에, 객체 간의 연결을 표현하기 위해 참조하고 있는 객체를 계속해서 재귀적으로 표현하게 됩니다.

예를 들어, A 객체가 B 객체를 참조하고, B 객체가 다시 A 객체를 참조하는 상황이라면 JSON으로 변환할 때 두 객체가 서로를 계속해서 참조하게 되어 무한 루프가 발생합니다.

이런 상황을 방지하려면 일반적으로 JSON 직렬화를 위한 라이브러리에서 무한 루프를 방지하는 방법을 제공합니다. 대표적인 방법은 객체 간의 순환 참조를 끊는 것이며, 이를 위해 라이브러리의 설정을 변경하거나 어노테이션을 사용하여 특정 필드를 제외하는 방법을 선택할 수 있습니다.

JSON 직렬화를 수행하는 라이브러리와 프레임워크에 따라 방법이 다를 수 있으니, 사용하고 계신 프레임워크 혹은 라이브러리의 문서를 참고하시면 도움이 될 것입니다.

더 자세한 내용은 프레임워크나 라이브러리의 공식 문서나 커뮤니티를 찾아보시면 도움이 될 것입니다.
더 궁금한 점이 있다면 추가로 질문해주세요. 감사합니다.

maurizio님의 프로필 이미지
maurizio
질문자

감사합니다.

maurizio님의 프로필 이미지
maurizio

작성한 질문수

질문하기