inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

주문 조회 V2: 엔티티를 DTO로 변환

@JsonIgnore 사용과 관련하여 질문드립니다.

728

비가싫어요

작성한 질문수 87

0

안녕하세요! @JsonIgnore 사용과 관련하여 궁금한 것이 있습니다.

API 결과를 반환할 때 엔티티를 바로 노출하지 않는 이유가 API 스펙의 안정화 및 순환참조 에러에 따른 Stackoverflow 에러를 방지하기 위함이라고 배웠는데요.

그런데 강의를 보면 domain에서 Delivery의 Order 와 Member의 Orders와 OrderItem의 Order에 여전히 @JsonIgnore를 사용하고 있네요.

DTO로 반환하는 경우와 별개로 늘 @JsonIgnore는 사용을 해줘야 하는 것인가요?

spring JPA java spring-boot

답변 1

0

y2gcoder

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

영한님의 강의 특성 상 단계를 진행해나가며 기존의 코드에서 개선하거나 보완하는 방향으로 나가는 경우가 많습니다. 그래서 api 엔드포인트들 중 v1이 들어가는 것들은 엔티티를 반환하는 경우들입니다. 이 때 위에서 말씀하신 부분을 방지하기 위해 @JsonIgnore를 그대로 넣어놓으신 것으로 보입니다.


감사합니다.

0

비가싫어요

우선 답변 감사합니다!

저도 y2gcoder님께서 하신 말씀대로 이해를 하고 있었고 그래서 @JsonIgnore 어노테이션을 다 지운 상태로 v2를 만들고 호출했더니 Stackoverflow 에러가 나더라구요. 그래서 제공해주신 소스코드를 보고 @JsonIgnore를 질문에서 명시한 곳에 추가를 했더니 그 때부터는 v2를 호출해도 Stackoverflow 에러가 안 나더라구요.

혹시 이 부분은 왜 그런 것일까요?

0

y2gcoder

저도 y2gcoder님께서 하신 말씀대로 이해를 하고 있었고 그래서 @JsonIgnore 어노테이션을 다 지운 상태로 v2를 만들고 호출했더니 Stackoverflow 에러가 나더라구요. 그래서 제공해주신 소스코드를 보고 @JsonIgnore를 질문에서 명시한 곳에 추가를 했더니 그 때부터는 v2를 호출해도 Stackoverflow 에러가 안 나더라구요.

 

v2를 호출하셨는데 그러셨다면 혹시 디버깅해보시겠습니까?

디버깅이 어려우시다면 제게 프로젝트 공유를 부탁드리겠습니다.

 

0

y2gcoder

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


전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.

구글 드라이브 업로드 방법 링크

주의: 업로드시 권한 문제 꼭 확인해주세요

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

1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

0

비가싫어요

https://drive.google.com/file/d/11xi8R0tuk8EkYzHHvSr5ob5lWnpPvQ4T/view?usp=sharing

링크를 보내드립니다.

 

  1. 실행방법은 로컬 환경에서 인텔리제이로 실행해서 돌렸습니다.

  2. 제공해주신 소스코드의 domain 패키지를 보고 @JsonIgnore 어노테이션을 제 프로젝트의 domain 패키지의 클래스에 추가하였던 것을 주석처리 해놓았습니다. OrderApiController에서 V2를 호출하였을 시 스택오버플로우 에러가 나는 것을 확인하시고 이에 대한 해결방법을 알려주시면 감사하겠습니다.

 

감사합니다.

0

y2gcoder

image

이렇게 화면이 뜨고 있는데 혹시 한 번 더 요청 드려도 될까요?

 

0

비가싫어요

아 그런데 파일을 보내놓고 JsonIgnore를 다 주석처리한 상태에서 V2를 제가 다시 호출하니 이제는 스택오버플로우 에러가 안 나고 정상적으로 응답이 오네요!

그래도 한 번 다시 파일을 보내드릴까요?

0

y2gcoder

저도 뭔가 꼬인게 있나 하고 파일 요청드린 거라.. 빌드 다시 해서 괜찮으신거면 다행입니다 :)

 

강의 관련 외 질문입니다.

0

70

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

93

1

BeanCreationException

0

93

3

Update 후 UpdateMemberResponse 매핑할 때

0

51

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

101

2

페이징 + 검색조건 관련해서 질문드립니다.

0

71

1

Query Dsl Q파일 질문입니다.

0

84

1

루트 쿼리라는것은

0

60

1

메서드를 분리하는 기준

0

67

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

113

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

86

2

fetch join과 영속화와 OSIV의 관계

0

88

2

Distinct 사용 전 결과에 대한 의문

0

117

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

60

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

79

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

139

1

OSIV ON 상태일 때

0

98

1

fetch join VS fetch join 페이징 궁금증

0

189

2

양방향 연관관계 알아보는 법?

0

108

1

16강 17강 간단 정리 이게 맞을까요 ?

0

167

2