스프링 부트 강의를 듣다가 드는 의문점,,
그냥 entity에 써도 될 것 같은데,,? 라는 생각과 함께 DTO가 왜 필요한지 궁금해졌다.
많은 기술 블로그를 참고해봤는데 얻게 된 결론은
entity와 dto를 분리하며 생기는 장점이 많기 때문이다.
- entity와 DTO을 분리하게 되면 필요한 데이터만 사용하게 되므로 네트워크 사용량이 줄어 더 빠른 응답시간을 얻을 수 있다.
- entity 구조가 변경되더라도 변경 사항이 클라이언트에 직접적으로 영향을 미치지 않기 때문에 클라이언트와 서버 간의 결합도를 낮추고 유지보수에 용이해진다. entity 클래스는 데이터베이스와 바로 맞닿는 클래스이기 때문에 직접 데이터를 참조할 경우 변경 사항이 생길 때마다 계속 변경해야 하는 불편함을 줄일 수 있다.
- Controller와 Service 사이에서 강한 의존을 방지하기 위해서 DTO를 사용한다.
Service가 받고 싶은 파라미터가 Controller에게 종속적이게 되면 Service가 Controller 패키지에게 의존하게 된다. 따라서 이를 방지하기 위해 Service가 원하는 포맷에 맞춰 Controller 단에서 DTO를 통해 그 포맷을 맞춰주는 것이다.
아직 배우는 단계라 많은 데이터를 다루지 않아서 필요성을 잘 못 느낀 것 같다. 큰 프로젝트를 진행하게 된다면 왜 필요한지에 대해 고민했던 시간이 생각날 것 같다. 🐥
참고 블로그
JSH 기술 블로그
aiden shin 기술 블로그
dbbymoon 기술 블로그
우아한 기술 블로그