Inflearn brand logo image

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

최봉석님의 프로필 이미지
최봉석

작성한 질문수

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

DTO 여러개 대신 하나로

작성

·

113

0

과정에서 보면

CreateUserDTO
GetAllUserResponseDTO
GetUserDTO
GetUserRsponseDTO

이렇게 생성을 했는데 그냥 UserDTO 하나만 생성해서 사용하면 안되는 건가요?

 

답변 2

0

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

UserDTO하나로 통일하는게 정석입니다.

그러나 관리가 힘들어질 수 있습니다.

가령 Controller에서 2개의 Action(method)을 예로 들어보겠습니다.

=======================

정석대로

=======================

가령 GetUser라는 Action을 예로 들면

UserViewModel GetUser(UserDTO,string role)

{

...

}

UserViewModel DeleteUser(UserDTO)

{

...

}

ViewModel이 비대해지고 BLL에 전달시 파라미터도 증가되는 것을 확인하실 수 있습니다.

그렇기에 애초에 간단하게 DTO를 나눴다고 생각하시면 되겠습니다.

정석대로 하셔도 문제는 없겠습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 최봉석님께서 질문해주신 DTO 관련 내용에 대해 답변 드리겠습니다.

DTO(Data Transfer Object)는 애플리케이션 계층 간 데이터 전송을 위해 사용되는 객체로, 각기 다른 용도의 데이터를 담기 위해 여러 개의 DTO를 생성하는 것이 일반적입니다. 이는 데이터 전송 시 목적에 맞는 데이터만 포함되어 코드의 명확성을 높이고, 불필요한 데이터 노출을 방지하기 위함입니다.

여러 개의 DTO를 사용하는 이유:

  1. 용도에 맞춤화: 각 DTO는 특정 작업에 맞춤화되어 있습니다. 예를 들어, CreateUserDTO는 사용자 생성 작업에 필요한 데이터만 포함하고, GetUserDTO는 사용자 조회에 필요한 데이터만 포함합니다.

  2. 보안 및 데이터 보호: 필요한 데이터만 포함시킴으로써, 잘못된 데이터가 다른 계층으로 전달되는 것을 방지할 수 있습니다.

  3. 유지보수성: 각각의 작업에 맞는 DTO를 사용하면 코드의 일관성을 유지할 수 있어 유지보수가 용이합니다.

동일한 구조를 가지는 DTO로 통일하는 것도 가능하겠지만, 이는 데이터의 목적과 보안 측면에서 문제가 발생할 수 있습니다. 따라서 각 용도에 맞게 DTO를 설계하는 것이 바람직합니다.

현재 수강하시는 강의에서는 이러한 점을 고려하여 다양한 DTO를 정의하고 있는 것으로 보입니다.

참고로, 관련된 유사한 질문에 대한 더 많은 설명은 DTO에 대해 자세히 알고 싶습니다라는 게시글에서 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

최봉석님의 프로필 이미지
최봉석

작성한 질문수

질문하기