본문 바로가기
Back-end

Entity와 DTO의 분리

by sgyeong 2025. 8. 9.

작은 프로젝트를 진행하는 동안에는 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를 사용하면 쿼리 결과를 필요한 데이터만으로 한정시켜 가져올 수 있다.