작은 프로젝트를 진행하는 동안에는 DTO하나로 처리하였지만, 규모가 커지고 유지보수가 필요한 시점에 오면 Entity와 DTO분리의 중요성을 느끼게 된다.
Entity와 DTO를 분리해야 하는 이유에 대해 정리해보았다.
Entity
Entity는 데이터베이스 테이블과 1:1 매핑되는 객체이다. 일반적으로 DB의 컬럼과 일치하는 필드들을 포함한다.
Entity 특징
- 실제 DB 테이블 구조와 밀접하게 연관된다.
- 비즈니스 로직이 포함될 수 있다.
DTO
DTO는 계층 간 데이터 전달을 위한 객체이다. 주로 Controller 와 Service, 외부 API와 내부 시스템 간에 데이터를 주고받기 위해 사용된다.
DTO 특징
- 외부로 노출될 데이터만 포함한다.
- 읽기 전용일 때도 많다.
- 필요한 데이터만 선택적으로 담을 수 있다.
Entity와 DTO를 분리해야 하는 이유
1. 보안상 이유
Entity 는 데이터베이스 테이블과 1:1 매핑되는 객체이다. Entity에 포함된 필드는 외부에 노출되어서는 안 되는 정보일 수 있다.
Entity를 그대로 반환하게 된다면 민감한 정보가 노출될 수 있다.
2. 계층간 의존성 최소화
Entity는 DB와 밀접하게 연관되어 있기 때문에 이를 외부로 노출하게 되면 데이터베이스 구조가 변경될 때 API 스펙도 함께 변경되는 문제가 발생한다. DTO를 사용하면 API는 DTO 구조에만 의존하므로 내부 구조 변경이 외부에 영향을 주지 않는다.
3. 유지보수와 확장성
DTO는 클라이언트 요구사항에 맞춰 자유롭게 구조를 변경할 수 있다. 예를들어 API 응답 형식은 자유롭게 구성하면서도 Entity는 그대로 유지하게 되어 유지보수가 쉬워진다.
4. 성능 최적화
DTO를 사용하면 쿼리 결과를 필요한 데이터만으로 한정시켜 가져올 수 있다.
'Back-end' 카테고리의 다른 글
| [server] 부하테스트 - EC2 부하테스트 툴 세팅 - 2 (0) | 2025.09.17 |
|---|---|
| [server] 부하테스트 - EC2 API 서버 세팅 - 1 (0) | 2025.09.17 |
| [server] 대규모 트래픽 처리 (0) | 2025.09.17 |
| [Annotation] Id 어노테이션 차이 정리 (1) | 2025.08.04 |
| MyBatis Vs. JPA (0) | 2024.04.05 |