Home DTO란?
Post
Cancel

DTO란?

DTO 정의

Data Transfer Object의 약자이다.


직역하자면, 데이터 전송 객체이고, 객체 지향 프로그래밍에서 사용되는 요소이다.
DTO는 비즈니스 로직과 같은 요소를 제외하고 데이터만 저장해야한다.
예시로 보면 쉽다.

1
2
3
4
5
6
7
8
9
class User {
    String name;
    String address;

    public User(String name, String address) {
        this.name = name;
        this.address = address;
    }
}

이것이 DTO인데, 사실 필자가 이 개념을 처음 접하게 되었을 땐 대체 이 코드를 실전에서 어떻게 써먹나? 라는 생각을 했었다.
객체 지향 프로그래밍을 다시 제대로 공부하면서 어디에 써먹는지 비로소 알 수 있게 되었다.


어디에 쓰나? (DTO와 관련된 반성)

바로 DB와 관련된 작업을 할 때 사용한다(해야 한다).
백엔드 작업을 하면서 DB에서 정보를 가져와서 이리저리 요리해야 하는 순간이 있다. 이 때, DTO를 사용하지 않고 바로 그 데이터를 건드리게 된다면?
높은 확률로 위험하다.
위험하기도 한데, 또 번거롭기도 하다. DB에서 가져온 데이터를 바로바로 수정하려면 그 때에 맞는 SQL을 추가적으로 작성해줘야 하기 때문이다.
그렇기 때문에 DB에서 가져와서 일단 Java식 데이터로 저장을 한 다음에 이것으로 이리저리 써먹는 것이다. 저장해놓고 이리저리 써먹기 때문에, 필요할 때마다 그때 그때 다시 데이터를 불러오는 일도 줄어든다.
다시 말해, 필자가 느낀 DTO의 필요성은 아래의 3가지이다.

1
2
3
1. 원본 데이터의 신뢰성과 안전성을 보장한다. (수정하더라도 DB에 반영을 안하면 그만이기 때문)
2. SQL 작성을 최소화 하면서 코드 작성 및 가독성을 높인다.
3. DB 접근 횟수가 줄어들기 때문에 프로그램 성능이 향상된다.


SSAFY에 와서 OOP를 공부하면서 DTO의 필요성을 몸소 깨닫게 되었다.
이후 프로젝트에서는 꼭 필요없는 상황이 아니라면, 무조건 DTO를 사용하여 데이터의 안전성을 보장하는 백엔드 개발자가 되고자 한다.

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