들켰다
DTO란?
4/20/2025

DTO는 Data Transfer Object의 약자로,

직역하자면 데이터 전송 객체이다.

보통 객체 변수와 간단한 getter와 setter로 이루어져 있는데,

이는 정말 이름 뜻대로 데이터를 옮기는게 최우선 목표이기 때문이다.

DTO를 사용함으로써 특정 엔티티에서 불필요한 변수를 덜어내고,

로직(목적지)에서 필요로 하는 변수만 전달하여 보안을 챙김과 동시에 유지보수성을 높이는 것이다.

예를 들어, 학생을 엔티티로 표현하게 되면 학번, 성별, 나이, 이름 등 필수적으로 명시해줘야하는 속성이 많을 것이다.

그리고 만약 학번으로 학생의 이름과 나이를 찾는 함수가 있다면, 실질적으로 사용/반환되는 학생의 속성값은 학번과 나이밖에 없을 것이다.

이 때, 엔티티 전체를 객체로 생성해야 한다면 성별을 포함한 로직에 사용되지도 않는 불필요한 값들이 메모리만 차지하게된다.

이름과 나이만 포함된 DTO를 생성하게되면 이야기는 달라진다.

학생 엔티티 객체에 비해 메모리는 적게 먹고, 필요한 값들만 한 눈에 보이는 코드가 된다.

그런 와중 DTO의 값들에 대한 validator도 있다면(이름에 특수문자가 없는지 확인한다던지) 금상첨화겠지만,

DTO의 본래 목적 중 하나인 메모리 절약을 해칠 수 있으니 주의해야한다.

폰 프레임