본문 바로가기

공부 자료/Spring

[Spring MVC] DTO 클래스와 Entity 클래스 역할 분리 필요 이유

DTO와 Entity 클래스를 매핑해서 사용하는 이유는 여러가지 존재하지만 그 중 대표적인 이유는 아래 3가지

 

DTO 클래스 - API 계층에서 요청 데이터를 전달 받고, 응답 데이터를 전송하는 것이 주 목적

Entity 클래스 - 서비스 계층에서 데이터 액세스 계층과 연동하여 비즈니스 로직의 결과로 생성된 데이터를 다루는 것이 주 목적

 

1. 계층별 관심사 분리

: 사용되는 계층이 달라 기능에 대한 관심사가 다름

: 하나의 클래스나 메서드 내에서 여러 개의 기능들을 구현하고 있는 것은 객체 지향 코드 관점에서도 리팩토링 대상이 됨

 

2. 코드 구성의 단순화

: DTO 클래스에서 사용하는 유효성 검사 애너테이션이 Entity 클래스에서 사용될 경우 JPA에서 사용하는 애너테이션가 뒤섞여 유지보수하기 어려운 코드가 됨

 

3. REST API 스펙의 독립성 확보

: 데이터 액세스 계층에서 전달 받은 데이터로 채워진 Entity 클래스를 클라이언트의 응답으로 그대로 전달하게되면 원치 않는 데이터까지 클라이언트에 전송될 수 있음. 따라서 DTO 클래스를 사용하면 정보를 클라이언트에게 노출하지 않고, 원하는 정보만 제공이 가능