DTO는 계층간 데이터를 전달하기 위한 객체이다. 단순히 데이터를 주고받거나 전환하는 용도로 사용하기 때문에 로직을 갖지 않고 Getter/Setter 메소드만 갖는다.
👉 데이터를 옮기는 바구니
VO는 도메인에서 한 개 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체이다. 로직을 포함할 수 있으며, 불변성의 보장을 위해 생성자를 사용하여야 한다.
👉 값 그 자체
DTO | VO | |
---|---|---|
목적 | 계층간 데이터 전송/전달 | 값 자체를 표현 |
동등성 | 필드값이 같아도 다른 객체 | 필드값이 같으면 같은 객체 |
가변성 | Setter 존재시 가변, 비 존재시 불가변 | 불변 |
로직 | Getter/Setter 메소드만 가짐 | Getter/Setter외에 메소드를 가질수 있음 / 값 초기화는 생성자를 통해서만 가능하다. |