본문 바로가기
BE/Node

DTO vs Entity

by Chars4785 2022. 7. 28.

Entity 클래스와 DTO 클래스를 분리하는 이유
View Layer와 DB Layer의 역할을 철저하게 분리하기 위해서
테이블과 매핑되는 Entity 클래스가 변경되면 여러 클래스에 영향을 끼치게 되는 반면 View와 통신하는 DTO 클래스(Request / Response 클래스)는 자주 변경되므로 분리해야 한다.
Domain Model을 아무리 잘 설계했다고 해도 각 View 내에서 Domain Model의 getter만을 이용해서 원하는 정보를 표시하기가 어려운 경우가 종종 있다. 이런 경우 Domain Model 내에 Presentation을 위한 필드나 로직을 추가하게 되는데, 이러한 방식이 모델링의 순수성을 깨고 Domain Model 객체를 망가뜨리게 된다.
또한 Domain Model을 복잡하게 조합한 형태의 Presentation 요구사항들이 있기 때문에 Domain Model을 직접 사용하는 것은 어렵다.
즉 DTO는 Domain Model을 복사한 형태로, 다양한 Presentation Logic을 추가한 정도로 사용하며 Domain Model 객체는 Persistent만을 위해서 사용한다.

Controller: router 가 안에 있다.

Model: Provider, service 

Entity: DB 와 직접적으로 

Provider: Service  ( Controller 와 Client와 소통하고 그 처리를 Service 에서 마무리 함 )

DI: 주입성

IOC: 관리, 객체에 대한 관리를 직접 하지 않고 해준다.

DTO: 서로 데이터 주고 받을때 기준? Schema 라고 생각하면 된다. 그러면 Entity랑 분리한 이유는 보안상의 이유도 있고 직접 DB 에 접근 하는 Entity는 자주 변경하지 않을수도 있고 DTO 는 자주 변경될수도 있다. 그래서 나눴다.

DAO:

 


https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html

 


참고

https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html

 

[DAO] DAO, DTO, Entity Class의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

'BE > Node' 카테고리의 다른 글

Nest 맵  (0) 2022.07.28
Nest.js(5)  (0) 2022.07.02
Nest.js(4)  (0) 2022.06.29
관점 지향 프로그래밍(AOP)  (0) 2022.06.24
Nest.js(2)  (0) 2022.06.23

댓글