더북(TheBook)

4.3.4 DTO와 도메인 모델

코드를 보고 놀랐나요? 완벽하게 정상적인 C# DTO입니다. 이 코드는 들어오는 JSON 문서의 구조를 확인하고 값을 가져옵니다.

예제 4-11 예약을 위한 DTO. 프로덕션 코드의 일부분입니다.
(Restaurant/bc1079a/Restaurant.RestApi/ReservationDto.cs)

public class ReservationDto
{
    public string? At {  get;  set; }
    public string? Email {  get;  set; }
    public string? Name {  get;  set; }
    public int Quantity {  get;  set; }
}

Reservation 클래스의 모습을 어떻게 예상했나요? 왜 코드에 이름이 비슷한 클래스가 2개나 포함되었을까요? 둘 다 예약을 나타내지만 역할이 다르기 때문입니다.

DTO의 역할은 입력되는 데이터를 데이터 구조 형식으로 가져오거나, 데이터 구조를 출력 형태로 변환해주는 것입니다. DTO는 캡슐화를 제공하지 않으므로 다른 용도로는 사용할 수 없습니다. 마틴 파울러는 다음과 같이 이야기했습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.