DTO : Data Transfer Object
를 말합니다. 데이터 전송 객체 라고 한다.
DTO는 계층 간의 데이터 교환을 위해서 사용하는 객체입니다.
여기서 말하는 계층은 VIEW (클라이언트) , 컨트롤러, 서비스 , DAO 같은것들을 말합니다.
DTO는 로직을 갖고 있지 않는 순수한 데이터 객체이며, Getter/Setter 메서드만을 갖고 있습니다.
DTO는 데이터를 전송할때 사용되는 바구니라고 생각하면 될것 같습니다.
또 다른 비유로는 시험을 응시할때 OMR 카드 작성을 하고 OMR 카드결과로 성적이 나오는데
OMR 카드를 DTO라고 볼 수 있습니다.
VO : Value Object(값 객체)
값 그 자체를 표현하는 객체입니다.
서로 다른 이름을 가진 VO인스턴스가 모든 속성값이 같다면 같은 객체입니다. (이때 전제 조건은 equals()와 hashcode()를 오버라이딩하는 것입니다.)
ex) 컬러라는 VO가 있고 그안에 Red의 RGB값은 (255,0,0) 입니다. 그래서 color1 이 (255,0,0)일때 color2가 (255,0,0)속성을 가질때 두개는 같은 객체로 판단합니다.
그리고 VO는 객체의 불변성을 보장합니다. 로직을 포함할 수가 있습니다.
Entity 클래스
실제 DB의 테이블과 매핑되는 클래스 입니다.
VO는 속성값으로 구분되었지만, Entity는 Id로 구분됩니다.
로직을 포함할 수 있다.
정리
DTO | VO | Entity | |
용도 | 레이어간의 데이터 전송 | 의미 있는 값을 표현 | DB테이블과 매핑되는 클래스 |
가변/불변 | 가변객체(immutable object) 생성 후 상태를 변경할 수 있다. |
불변객체 생성후 상태 변경이 없다. |
가변객체 생성 후 상태를 변경할 수 있다 |
로직 포함 여부 | 로직을 포함할 수 없다. | 로직을 포함할 수 있다. | 로직을 포함할 수 있다. |
'웹 개발자 준비 과정🐳 > 스마트팩토리,MES 시스템 개발' 카테고리의 다른 글
SQL.xml 코드 분석/리뷰 (2) | 2022.11.23 |
---|---|
Nodejs 와 MSSQL 연동하기 (1) | 2022.11.16 |
스마트 팩토리 | MES 시스템에 딥러닝(영상인식) 기술 추가하기(1) (0) | 2022.11.11 |
Day-1: MES.. 파일 분석하기..! (0) | 2022.10.20 |