[Spring/JPA] DTO와 Entity를 분리해서 사용하는 이유
엔티티 구조 변경 시 발생 문제
- 예를 들어 요구 사항이 변경되어 엔티티의 필드 이름이 변경될 경우, API 스펙이 변경되어 추가 작업이 요구됨.
필요한 데이터만 전송하기 어려움
- 엔티티를 직접 반환하면 엔티티에 존재하는 모든 데이터가 반환됨.
즉, 사용자가 필요로 하는 데이터만 전송하기 어려움.(모든 데이터 반환 시 트래픽 증가, 성능 및 비용 면에서 현저한 차이)
순환 참조 문제
- 엔티티 간에 양방향 관계가 존재할 경우, 엔티티를 반환하는 순간 순환 참조로 인해 무한 JSON 직렬화 이슈가 발생할 수 있음.
보안 문제
- entity를 반환하면 테이블을 공개하는 것이나 다름 없으므로 민감한 정보가 노출될 수 있음.