1. 명확한 역할 분리
RequestDto : 클라이언트가 서버로 보낼 데이터(요청)
ResponseDto : 서버가 클라이언트에게 돌려줄 데이터(응답)
입출력 구조 명확하게 분리 가능
2. 보안성 강화
엔티티를 그대로 요청/응답에 사용하면 민감한 데이터가 노출될 가능성이 있다.
예를 들면, password같은 정보를 그대로 응답해주면 보안 사고로 이어질 수 있다.
그래서 ResponseDto를 따로 만들어서 필요한 데이터만 담아 보내면 막을 수 있다.
3. 엔티티 보호 (유지보수성 향상)
엔티티 구조는 서비스의 비즈니스 로직에 따라 변할 가능성이 크다.
엔티티를 그대로 사용하면 API 스펙이 바뀌면서 클라리언트와 충돌이 발생할 수 있다.
Dto를 사용하면 엔티티 구조가 바뀌어도 API의 응답 형식을 일정하게 유지할 수 있다.
4. 데이터 검증 및 가공 용이
ReqeustDto에서 @Valid, DTO 변환 로직 등을 사용해서 들어오는 데이터를 미리 검증할 수 있다.
예를들어, @NotNull, @Size(min = 3, max = 10) 같은 걸로 유효성 검사를 하면 컨트롤러에서 불필요한 검증 로직을 줄일 수 있다.
ResponseDto에서는 엔티티에서 받아온 데이터를 필요한 형태로 가공해서 클라이언트에 전달할 수도 있다.
"엔티티를 직접 노출하지 않고, 역할을 분리하면서, 보안과 유지보수를 고려하기 위해 Dto를 사용한다"
'Spring Boot' 카테고리의 다른 글
| PUT vs PATCH 차이점 (0) | 2025.02.27 |
|---|---|
| Spring 예외 처리 GlobalExceptionHandler 사용 이유 (0) | 2025.02.27 |
| private final vs autowired 차이점 (0) | 2025.02.14 |
| RequestParam vs PathValue 차이 (0) | 2025.02.13 |
| [Spring Boot] HTTP 상태 코드 (HTTP Status Code) (2) | 2024.12.19 |