Post

DTO 란?

DTO 가 무엇인지 알아보자

서론

우리가 API를 만들때 데이터베이스와 서버 사이에 통신이 발생한다.
이때 데이터를 직접 교환하는것이 아닌 디자인패턴으로 설계된 계층간에 데이터 교환을 위해 만들어진 객체가 DTO이다.
오늘은 이 DTO에 대해서 알아보고 어떻게 설계해야하는지 알아보자.

DTO란?

DTO는 “Data Transfer Object”의 줄임말이다.
말 그대로 데이터를 교환하기 위한 객체로 따로 무언가를 처리하기위한 로직을 가지지않는다.
그저 데이터들을 저장하기 위한 프로퍼티, 데이터를 교환하기 위한 메소드(getter, setter)만 가지고 있다.
또한 DTO는 위에서 언급한 데이터를 설정하고 교환하기위한 getter와 setter 외의 다른 로직은 존재하면 안된다.

MVC패턴이라는 것에 대해서 들어봤을 것이다.
이 MVC패턴에서는 DAO를 사용하는데 이는 데이터베이스에 관련된 로직을 처리하기위한 레이어다.
서비스 레이어와 이 DAO가 서로 데이터를 주고받는데 이것을 DTO를 거친다.

위 그림을 보면 Service 와 DAO 사이에 DTO를 통해 데이터를 주고받는다.
이처럼 직접적으로 데이터를 넘기는게 아니라 중간 계층을 통해 데이터를 주고받기위한 역할을 하는 것이 DTO이다.

DTO를 왜 사용할까?

이를 이해하려면 SOLID 법칙의 개방-폐쇄 원칙에 대해서 생각해봐야한다.
직접적으로 데이터를 수정할 수 있게 된다면 보안상 취약점이 발생할 수도 있다.
이 때문에 데이터를 캡슐화하고 DTO를 통해 MVC패턴의 레이어들 간의 결합을 느슨하게 만드는 것이다.

마치며

DTO를 사용하면 좀 더 객체지향적인 설계가 가능해진다. 처음에는 번거롭겠지만 익숙해진다면 더 좋은 개발을 할 수 있을 것이다.

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