DTO
- 계층(layer)간 데이터 교환을 위해 사용하는 객체
- 속성값이 모두 같아도 같은 객체가 아닐 수 있다.
- 데이터 교환만을 위해 사용하므로 로직을 갖지 않고, getter / setter 메서드만 갖는다.
VO
- 값 그 자체를 표현하는 객체
- 로직을 포함할 수 있으며, 객체의 불변성(객체의 정보가 변경되지 않음)을 보장
- 속성값이 모두 같으면 같은 객체
- 따라서 VO에는 equals / hashCode를 오버라이딩해야한다.
- @EqualsAndHashCode를 사용하자.
추가
- Entity : 실제 DB의 테이블과 매핑되는 객체
https://www.youtube.com/watch?v=J_Dr6R0Ov8E
https://dkswnkk.tistory.com/500