DTO vs Model vs Entity
스프링프레임워크를 공부하면서 DTO와 Entity의 역할 차이는 확실한데 Model의 개념과 셋의 차이점이 궁금해 추가로 공부해봤다.
닷넷프레임워크를 사용할땐 대부분의 클래스를 Model라고 칭했기 때문에 더 혼란스러웠다.
언어별로 부르는 명칭이 다른 듯하다. 사실 명칭보다 더 중요한 것은 각 클래스가 어떤 역할을 하는지 정확히 아는 것이다.
명칭 | 역할 |
---|---|
DTO | 클라이언트의 데이터를 받는 역할. 클라이언트에서 사용하는 것이므로 노출되도 상관없다. |
Model | 비즈니스 데이터를 담는 역할 |
Entity | 데이터베이스의 테이블과 스키마를 표현하는 역할. DB컬럼과 연결되기때문에 필드명이 노출되서는 안된다. |
예시
공부하면서 내가 생각해 본 예시이다.
결제프로그램을 예로 들어 DTO, Model, Entity를 비교한다면 아래와 같을 것이다.
명칭 | 예시 |
---|---|
DTO | 클라이언트가 입력한 카드정보, 쿠폰정보, 결정정보 파라미터로 전달한 걸 컨트롤러에서 받음 |
Model | 유저별 결제 혜택, 포인트 차감, 통신사할인등 중간에 연산이나 외부시스템연동할때 쓸 필드들을 model에 담아서 처리함 |
Entity | 연산되고 DB에 기록되어야 할 데이터(유저ID, 연산 후 포인트등)를 담아서 update시킴 |