-
[m1 맥북] - nest.js 공부하기 7. Data Transfer Object(DTO)Nest.js 2022. 5. 21. 23:20728x90
Data transfer Object(DTO)
DTO (Data Transfer Object)는 무엇인가요?
계층간 데이터 교환을 위한 객체입니다. DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체 를 말합니다. DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체입니다. interface나 class를 이용해서 정의 될 수 있습니다. (하지만 클래스를 이용 하는것을 Nest JS에서는 추천하고 있습니다)
Nest JS에서 데이터 처리의 흐름을 보면... Board를 위한 Property들을 여러 곳에서 사용하고 있습니다. ( title, description..) 지금은 간단한 애플리케이션을 만들기 떄문에 몇개의 프로퍼티만 불러 주 고 몇군데에서만 불러 주면 됩니다. 하지만 정말 많은 프로퍼티를 갖고 정 말 여러군데에서 이용하며 갑자기 한곳에서 Property 이름을 바꿔줘야한다 면 어떻게 해야할까요? 그러면 다른 곳에 똑같이 쓰인 모든 곳의 프로퍼티도 똑같이 바꿔줘야 합니다.
Interface VS Class For DTO
DTO 는 Interface나 Class를 사용해서 만들면 됩니다. 하지만 Class가 더 선호됩니다. 선호되는 이유는 ?
TypeScript 인터페이스를 사용하거나 간단한 클래스를 사용하여 DTO 스키마를 결 정할 수 있습니다. 흥미롭게도 여기에서 Class를 사용하는 것이 좋습니다. 왜? 클래 스는 JavaScript ES6 표준의 일부이므로 컴파일 된 JavaScript에서 실제 엔티티로 유지됩니다. 반면에 TypeScript 인터페이스는 트랜스 파일 중에 제거되므로 Nest는 런타임에서 참조 할 수 없습니다. 이것은 파이프와 같은 기능을 런타임에서 사용할 수 있기 때문에 런타임에서 사용 될 수 있는게 중요합니다. 그래서 DTO는 CLASS를 이용해서 만들겠습니다.
728x90'Nest.js' 카테고리의 다른 글
[m1 맥북] - nest.js 공부하기 9. ID로 특정 게시물 가져오기 (0) 2022.05.21 [m1 맥북] - nest.js 공부하기 8. 게시물 생성을 위한 DTO (0) 2022.05.21 [m1 맥북] - nest.js 공부하기 6. 게시물 생성하기 (0) 2022.04.27 [m1 맥북] - nest.js 공부하기 5. Board Model 정의하기 (0) 2022.04.26 [m1 맥북] - nest.js 공부하기 4. 모든 게시물을 가져오는 Service 만들기 (0) 2022.04.24