Team project/'AdvICE' 웹 서비스 프로젝트

[AdvICE] Entity클래스 와 DTO클래스 차이

kanado 2024. 3. 29. 03:48

문제:

SpringBoot로 API서버를 구현하는 과정에서
POST 또는 PUY 요청을 받았을때 먼저 데이터를 바로 Entity 클래스로 받고 데이터 베이스에 저장하지 않고
먼저 DTO 클래스로 받고 Entity클래스로 변환한 다음에 데이터 베이스에 저장하는 이유가 궁금해졌다.

Entity 클래스

 

해결:

그 이유로는 크게 3가지가 있었다.
1. 유효성 검사 및 데이터 적합성(Validation and Sanitization): 사용자로부터 받은 데이터가 직접 엔티티에 저장되기 전에, DTO를 통해 유효성 검사를 수행할 수 있다. 이 과정에서 데이터의 적합성과 보안을 검증하여, 잘못된 데이터가 데이터베이스에 저장되는 것을 방지한다.

2. 안전한 데이터 노출(Safe Data Exposure): 엔티티 클래스에는 비즈니스 로직을 위한 중요한 정보가 포함될 수 있으며, 이를 그대로 클라이언트에 노출하는 것은 보안상 위험할 수 있다. DTO를 사용하면 클라이언트에 전달할 데이터를 명확하게 제어할 수 있어, 민감한 정보의 노출을 방지할 수 있다.

3. 성능 최적화(Performance Optimization): 때로는 클라이언트가 요구하는 데이터와 엔티티 클래스가 가진 데이터 간에 차이가 있을 수 있다. DTO를 사용하면 필요한 데이터만 선택적으로 전송하여 네트워크 사용량을 최적화하고 성능을 개선할 수 있다.