티스토리 뷰
엔티티가 getter setter를 가지고 있으면 Controller단이 아니라 어디서든 실수로라도 쉽게 속성이 변경될 수가 있다. 또한 DB의 테이블 스키마와 같은 구조이기 때문에 테이블 설계가 노출되는 문제가 있다.
그리고 요청을 통해 여러 테이블에서 값을 리턴받는다고 생각해보자.
DTO를 이용하면 필요한 모든 값들을 하나의 DTO에 담아서 보내줄 수 있으므로 개인적으로 Front단에서 편리하게 작업을 할 수 있는 환경을 줄 수 있다고 생각한다.(또한 필요 없는 속성은 굳이 안 보내도 되는 장점까지!)
그리고 가장 중요한 부분이라고 생각하는 점은 '순환참조'를 예방할 수 있다.
JPA로 개발할 때 양방향 참조된 엔티티를 컨트롤러에서 응답으로 return 하게 되면, 엔티티가 참조하고 있는 객체는 지연 로딩되고, 로딩된 객체는 또다시 본인이 참조하고 있는 객체를 호출하게 된다. 이렇게 서로 참조하는 객체를 계속 호출하면서 결국 무한 루프에 빠지게 되는 문제를 낳게 된다.
그러므로 DTO를 사용하는 것이 순환 참조를 예방할 수 있다.
참고자료
woowacourse.github.io/javable/post/2020-08-31-dto-vs-entity/
'내 성장기록' 카테고리의 다른 글
Spring boot S3이미지 업로드하기 (0) | 2021.04.02 |
---|---|
Konlpy 사용 시 JPype에러 (0) | 2021.04.02 |
Localhost vs 127.0.0.1 이 둘의 차이는?? (0) | 2021.03.14 |
자바스크립트 Promise (0) | 2021.03.06 |
Nginx란? (0) | 2021.02.09 |