본문 바로가기
웹 개발자 준비 과정🐳/스마트팩토리,MES 시스템 개발

DTO , VO, Entity 정리.txt

by @ENFJ 2022. 10. 20.

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)
생성 후 상태를 변경할 수 있다.
불변객체
생성후 상태 변경이 없다.
가변객체 생성 후 상태를 변경할 수 있다
로직 포함 여부 로직을 포함할 수 없다. 로직을 포함할 수 있다. 로직을 포함할 수 있다.