DTO 관련 질문입니다.
297
작성한 질문수 22
안녕하세요!
강의를 듣다가 의문점이 생겨서 질문드립니다.
컨트롤러에서 요청에 대한 응답 반환시 엔티티를 직접 반환하는 대신 DTO를 반환하는 것은 이해를 하였는데요!
그렇다면 조회한 엔티티를 DTO로 변환하는 것은 서비스 계층에서도 할 수 있고 아니면 컨트롤러 계층에서도 할 수 있을 것 같은데요.
강의에서는 리포지토리에서 엔티티를 직접 조회하는 경우, DTO로 조회하는 경우 둘 다 서비스 계층에서 DTO를 반환하는 식으로 구현이 되었는데요.
제 생각에는 컨트롤러에서 반환하는 DTO는 아무래도 화면에 의존적이므로 UI가 바뀌면 DTO도 자주 바뀔 것 같아서서비스에서는 엔티티를 리턴하고 DTO로 변환은 컨트롤러에서 하는 방법이 좋을 것도 같긴한데요.
혹시 실무에서는 어떤식으로 사용하시나용?
감사합니다.
답변 1
2
안녕하세요!! 연어포케님~!!! 크으~~~ 매우매우 좋은 질문이십니다 ㅎㅎㅎㅎ
저의 경험을 말씀드리자면, 실무에서 제가 경험했던 그리고 건너건너(?) 이야기 들었던 프로젝트들에서는 모두 Service에서 DTO를 처리해주었습니다!
제가 유추해보자면, 그 이유는 다음과 같습니다!
DTO 자체가 View에 종속적인 면이 있지만, 동시에 DTO를 만드는 행위 자체를 Business Logic으로 간주할 수도 있음.
예를 들어, Entity를 집계하거나 가공해야 한다면 이는 Controller 보다는 Service에서 처리해야함
DTO를 만드는 과정에서 외부 API, 트랜잭션 등이 필요할 수 있음. Controller는 HTTP와 관련된 역할을 담당하기에 이러한 일을 처리하기 애매함.
간단한 기능은 한 유형의 Entity로 구현 가능하지만, 기능이 조금만 복잡해지면 최소 N개 유형의 Entity가 필요함. Service에서 Controller로 N개의 Entity를 반환해주는 것은 애매한 측면이 있음
도움이 되었으면 좋겠네요~!! ㅎㅎㅎㅎ 좋은 질문 감사드립니다!!! 🙏🙏
안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?
0
69
2
실행이 안되네요
0
67
2
프론트 영역 보는법
0
52
2
companion object
0
79
2
Custom 레프직토리 형식
0
60
2
Querydsl 도입
0
68
2
fetch join DISTINCT 중복제거
1
85
2
표준 예외와 커스텀 예외 사용 전략 질문
0
92
3
이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.
1
177
2
테스트를 위한 코드
1
105
2
프로젝트 실행 에러
0
153
2
PDF 문서에 오타가 있어서 알려드립니다.
1
102
1
enum질문
1
86
1
테스트 후 AfterEach 함수에서 나오는 쿼리
0
136
2
테스트 fixture
1
211
2
./gradlew test 실행시 인식할수 없다고 뜹니다.
0
141
1
test 코드 실행시 경고가 발생합니다.
0
141
1
13강 User Kotlin 변환중
2
170
3
'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문
2
174
1
-
0
141
2
4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?
0
314
3
junit import 불가
0
277
3
테스트 코드와 관련하여 질문이 있습니다.
1
219
1
hibernate가 select를 두번 하는 이유
0
240
1





