Spring/이론
Spring DTO에 대해
JuNo_12
2025. 5. 8. 19:15
DTO는 Data Transfer Object의 줄임말로,
"데이터 전송을 위한 객체", 말 그대로 데이터만 담아서 전달하는 용도의 객체이다.
DTO는 데이터 전달용 전용 클래스로,
비즈니스 로직 없이, 필요한 데이터만 담아서 계층 간 또는 클라이언트와 서버 간 전송할 때 사용한다.
Spring이 아니더라도 객체지향 프로그래밍(OOP)에서 데이터를 나누어 클래스로 표현하고 getter로 데이터를 꺼내 쓰는 건 매우 일반적인 패턴이다.
DTO도 그런 객체 중 하나의 역할을 수행하는 특화된 형태라고 보면 된다.
둘의 차이점 중에는 일반 클래스에는 비즈니스 로직을 가질 수도 있지만, DTO는 로직을 갖지 않고 getter/setter 정도만 존재한다.
| 항목 | 설명 |
| 목적 | 계층 간 데이터 전달 (Controller ↔ Service ↔ Repository) |
| 역할 | 로직 없이 데이터만 가짐 (Getter/Setter, 생성자 등만 포함) |
| 사용처 | 주로 요청(Request) 또는 응답(Response) 시 사용 |
| 구성 | 필드 + 생성자 + Getter/Setter (가끔 @Builder, @AllArgsConstructor도 사용) |
왜 DTO를 써야 할까?
- 엔티티 직접 노출 방지
- DB와 연결된 Entity를 그대로 외부에 노출하면 보안, 유지보수에 문제가 생긴다.
- DTO를 통해 필요한 데이터만 추려서 전달 가능.
- 입출력 명확화
- 어떤 요청에는 어떤 데이터가 필요하고, 어떤 응답을 줄지 명확하게 구조화된다.
- 유연한 필드 제어
- 예: 클라이언트에는 id, title만 보내고 internalFlag 같은 민감한 정보는 숨길 수 있다.