DTO

박민서·2023년 5월 15일
0

Jpa1

목록 보기
5/6

DTO란?

  • Data Trasfer Object를 줄여서 DTO라 하고 계층간 데이터 교환을 위해 사용하는 객체이다.

MVC 패턴

  • MVC 패턴은 어플리케이션을 개발할 때 그 요소를 Model, View, Controller 세가지 역할로 구분하는 디자인 패턴이다. 비즈니스 처리 로직(Model) 과 UI 영역(View) 는 서로의 존재를 인지하지 못하고, Controller가 Model과 View의 연결을 담당한다.

  • Controller는 View로부터 들어온 사용자 요청을 해석하여 Model을 업데이트 하거나 Model로부터 data를 받아 View로 전달하는 작업을 수행한다.

  • MVC 패턴의 장점은 Model과 View를 분리함으로써 서로의 의존성을 낮추고 독립적인 개발을 가능하게 한다.

  • Controller는 View와 도메인 Model의 데이터를 주고 받을 때 별도의 DTO를 주로 사용한다.

  • 도메인 객체를 View에 직접 전달할 수 있지만, 민감한 도메인 비즈니스 기능이 외부에 노출될 수 있으며 Model과 View 사이에 의존성이 생기기 때문이다.

TodoSaveDto

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED) // 파라미터가 없는 생성자
@AllArgsConstructor // 파라미터가 있는 생성자
public class TodoSaveDto {
    private Long id;

    @NonNull
    private String userName;

    private boolean checkBox;

    private String works;

    @Builder
    public Todo toEntity(){
       return Todo.builder()
                .id(id)
                .checkBox(checkBox)
                .works(works)
               .build();
    }
}

TodoController

 public Long todoSave(TodoSaveDto todoSaveDto){
       Long id = todoService.save(todoSaveDto);
        return id;
    }
    
  • 이렇게 DTO를 사용하면 도메인 Model을 캡슐화하고, UI 화면에서 사용하는 데이터만 선택적으로 보낼 수 있다.

  • DTO는 클라이언트 요청에 포함된 데이터를 담아 서버 측에 전달하고, 서버 측의 응답 데이터를 담아 클라이언트에 전달하는 계층간 전달자 역할을 한다.

    Reference

    https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/

profile
ㅎㅇㅌ

0개의 댓글