inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

Result 클래스 관련 질문입니다.

952

asdf5184

작성한 질문수 13

2

Result 클래스를 만들어서 response 데이터를 보냈습니다. 이때 제너릭으로 설정하신 이유가 있나요?

현재 아래 코드가 이런식입니다. 

static class Result<T> {

private T data;

}

그런데 제너릭을 쓰지 않는 반환용 DTO를 만들어서

static class ResultDto{

private List<OrderDto> orderDtos

}

이렇게 하지 않는 이유가 있나요?

보통 실무에서는 어떤 방식을 주로 사용하시나요?

감사합니다. 

java JPA spring-boot spring

답변 1

8

David

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

Result 객체가 생기기 전에는 MemberDto, OrderDto 등 각각 서로 다른 타입으로 반환하고 있습니다.

MemberDto는 멤버 정보를 담고 있는 객체이고, OrderDto는 주문 정보를 담고 있는 객체입니다.

예를들어, 응답 데이터로 특정 도메인의 정보(Member, Order 등)뿐만 아니라 응답 상태 코드를 추가적으로 나타내라는 요구사항이 추가되었습니다.

그러면 MemberDto, OrderDto는 응답 상태 코드를 가지기에는 객체의 정체성과 맞지 않습니다. 응답 상태 코드는 멤버 정보도 아니고, 주문 정보도 아니기 때문입니다.

따라서 API 컨트롤러의 응답을 추상화한 Result라는 클래스를 도출합니다

Result는 응답을 추상화했기 때문에 사용자가 요청한 데이터(MemberDto, OrderDto)도 담아야 하고, 응답 그 자체에 대한 데이터(StatusCode)도 담을 수 있어야 합니다.

이런 맥락에서 Result 객체의 핵심인 사용자가 요청한 데이터를 받는 data 필드가 생기게 되고, 추가 요구사항이었던 statusCode도 추가될 수 있습니다. 이때 사용자가 요청한 데이터가 어떤 타입이든 Result 객체에서 받을 수 있으려면 제네릭을 사용하여 명시한 타입을 data의 타입으로 사용할 수 있게 하는 것입니다.

 

실무에서 어떤 것을 선호한다기 보다, 제네릭이 필요한 상황이 있다면 제네릭을 씁니다.

굳이 필요없다면 구체적인 타입을 명시합니다.

감사합니다.

강의 관련 외 질문입니다.

0

66

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

87

1

BeanCreationException

0

87

3

Update 후 UpdateMemberResponse 매핑할 때

0

47

1

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

0

99

2

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

0

70

1

Query Dsl Q파일 질문입니다.

0

82

1

루트 쿼리라는것은

0

58

1

메서드를 분리하는 기준

0

63

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

110

3

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

0

84

2

fetch join과 영속화와 OSIV의 관계

0

85

2

Distinct 사용 전 결과에 대한 의문

0

113

2

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

0

56

1

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

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

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

0

86

1

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

0

133

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

180

2

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

0

105

1

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

0

165

2