[Nest.js] DTO란, Entity란

몽슈뜨·2023년 2월 20일
1

TIL

목록 보기
45/70
post-thumbnail
  • Entity란?
    데이터베이스 테이블에 매핑되는 클래스
    @Entity() 데코레이터를 적용해서 생성할 수 있음

Entity와 DTO차이
Entity와 DTO를 분리해서 관리해야 하는 이유는 DB Layer와 View Layer 사이의 역할을 분리 하기 위해서다.

Entity 클래스는 실제 테이블과 매핑되어 만일 변경되게 되면 여러 다른 클래스에 영향을 끼치고, DTO 클래스는 View와 통신하며 자주 변경되므로 분리 해주어야 한다.

결국 DTO는 Domain Model 객체를 그대로 두고, 복사하여 다양한 Presentation Logic을 추가한 정도로 사용하며 Domain Model 객체는 Persistent만을 위해서 사용해야한다.

즉, Entity는 DB와 1:1매칭이 되는 Class이지만, DTO의 경우 통신간의 Data의 형태를 정의한것임으로 Entity와는 다르게 수시로 변경이 될수 있다.

이것을 위해서 비슷해 보이는 Entity와 DTO를 서로 분리한것이다.



DTO는 "Data Transfer Object"를 나타냅니다. DTO는 클라이언트와 서버 간 또는 애플리케이션의 서로 다른 모듈 간과 같이 애플리케이션의 서로 다른 계층 간에 데이터를 캡슐화하고 전송하는 데 사용되는 클래스입니다. DTO는 일반적으로 특정 작업에 필요한 속성만 포함하며 데이터 교환을 단순화하고 네트워크 오버헤드를 줄이는 데 자주 사용됩니다. NEST.js에서 DTO는 종종 API 엔드포인트에 대한 요청 및 응답 페이로드의 모양을 정의하는 데 사용됩니다.

반면 엔티티는 애플리케이션에서 비즈니스 객체 또는 모델을 나타내는 클래스입니다. 사용자, 제품 또는 주문과 같은 엔터티는 종종 데이터베이스에 유지되며 데이터베이스 테이블과 일대일 매핑을 갖습니다. 엔터티는 일반적으로 DTO보다 더 많은 속성을 가지며 비즈니스 규칙 및 작업을 처리하기 위한 추가 논리를 포함할 수 있습니다. NEST.js에서 엔터티는 데이터베이스 테이블을 클래스에 매핑하거나 그 반대로 매핑하기 위해 TypeORM과 같은 ORM(Object-Relational Mapping) 라이브러리와 함께 자주 사용됩니다.

요약하면 DTO와 엔터티는 두 가지 중요한 클래스 유형입니다. 애플리케이션의 다른 부분에서 데이터를 표현하고 관리하는 데 사용되는 NEST.js에서. DTO는 애플리케이션의 서로 다른 계층 간의 데이터 교환을 단순화하는 데 사용되는 반면 엔터티는 비즈니스 개체를 나타내고 데이터베이스와 상호 작용하는 데 사용됩니다.

profile
개발자되면 맥북사줄께

0개의 댓글