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

tksrleo123님의 프로필 이미지

작성한 질문수

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

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

DTO에 @Getter가 필요한 이유

해결된 질문

22.09.09 17:10 작성

·

845

2

OrderDto, OrderItemDto 같은 DTO에 @Getter 가 필요한 이유가 궁금합니다.

또, 요청을 받는 DTO는 요청 받을 필드만 선언하면 되고, 응답용 DTO는 응답하고 싶은 필드만 정의 하여 생성자를 만들면 되는지 궁금합니다.

답변 1

2

y2gcoder님의 프로필 이미지

2022. 09. 09. 21:24

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

  1. DTO에 보시면 멤버 변수들이 모두 private으로 선언되어있습니다. 그래서 외부에서 해당 값에 접근하기 위해 getter를 사용해주고 있습니다.

  2. DTO는 문자 그대로 데이터를 전달하는 용도로 사용하는 객체이기 때문에, 말씀하신 것처럼 요청 받을 필드, 응답하고 싶은 필드만 정의해서 사용하는 것이 좋습니다. 오히려 그러기 위해 DTO를 사용하고 있습니다.


감사합니다.

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

2022. 09. 09. 22:58

답변 감사합니다.

1번 에 대해 질문 드립니다.

OrderApiController 의 경우 OrderDto, OrderItemDto 의 Getter 가 사용된 적 없는 것 같은데 어디서 쓰이는 지 알 수 있을까요?

y2gcoder님의 프로필 이미지

2022. 09. 09. 23:05

스프링 부트는 Jackson 라이브러리를 사용하고 있습니다. 이를 통해 json 데이터들을 직렬화 / 역직렬화 하고 있습니다.

여기서 getter는 직렬화할 때 getter를 사용합니다. 즉 DTO들을 JSON 데이터로 다시 가공할 때 getter를 사용한다고 이해해주시면 감사하겠습니다 :)

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

2022. 09. 09. 23:19

감사합니다!!