https://www.youtube.com/watch?v=EeJnNaiMy3U&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=174 영상을 보며 정리하였습니다.
DTO(Data Transfer Object)
- 레이어 간 데이터를 전달하는 객체 (바구니 같은 개념)
DTO 특징
- 데이터 접근 메서드 외에 기능을 가지지 않는다.
- 정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있다.
- 데이터의 캡슐화를 통해 유연한 대응이 가능하다.
VO(Value Object)
- 값을 가지는 객체 즉 값 자체로 의미를 가지는 객체
- 변하지 않는 값을 가지는 객체
- 값이 변하지 않음을 보장하며 코드의 안정성과 생산성을 높인다.
- 값이 같다면 동일한 객체
- 각 객체를 비교하는 데 사용되는 ID가 있다.
- 같은 객체인지 판단하기 위해 각 속성들의 값을 비교한다.
공통점
- 레이어간 데이터를 전달할 때 사용이 가능하다
- VO는 불변을 보장하기 때문에 전달하는 용도로 사용이 가능하다.
차이점
- DTO는 값이 변할 수 있지만 VO는 변하지 않는다.
- DTO는 레이어와 레이어 사이에 사용하지만 VO는 모든 레이어에서 사용이 가능하다.
- DTO는 데이터 접근 이외에 기능을 가지지 않지만 VO는 특정한 비즈니스 로직을 가질 수 있다.
- DTO는 dto1(1) != dto2(1) VO는 vo1(1) == vo2(1)