alt
Home DTO(data transfer object)에 관해서
Post
Cancel

DTO(data transfer object)에 관해서

: DTO란, 비즈니스에 종속되어있고, Layer간 데이터 전송이 목적인 일종의 자료구조 역할을 수행하는 객체


DTO가 필요한 이유

  • 일단 필요 정도는 프로젝트 규모에 따라 다를 것 같다. 큰 프로젝트일수록 DTO가 잘 분리되어 있다면 복잡도를 줄일 수 있고 변화에 용이할 것 같다.
  • DTO와 엔티티를 분리하는 이유: 비즈니스의 변경에 따라 Entity와 독립적으로 변경될 가능성이 항상 있기 때문이다.


DTO 사용과 위치

: 일단 표준은 없어서 명확히 DTO 위치에 정해진 것도 없고 상황에 따라 다양하게 사용될 수 있다.


사용되는 경우

  • 컨트롤러와 서비스가 DTO를 주고받고 서비스에서 Entity화 (repository는 DTO가 아닌 Entity에 의존적이기 때문)
    • e.g) fooEntity = FooDto.toEntity();
  • 서비스가 Entity를 DTO로 변환시켜 컨트롤러로 반환하기
    • e.g) return FooDto.of(fooEntity);


DTO는 일반적으로 원시 타입을 사용한다.

  • 어차피 JSON형태로 앞단에 전달하니까 원시 타입을 사용한다. Entity에는 nullable을 표현 할 수 있는 래퍼타입을 권장한다.



Reference)

https://xlffm3.github.io/spring%20&%20spring%20boot/DTOLayer/

https://dbbymoon.tistory.com/4

https://github.com/HomoEfficio/dev-tips/blob/master/DTO-DomainObject-Converter.md

This post is licensed under CC BY 4.0 by the author.