[VO : Value Object]
- 값 그 자체를 표현하는 객체이다.
- 해당 클래스 내 로직을 포함할 수 있으며, 불변성(객체의 정보가 변경되지않음)이 보장되어야 한다.
- 객체의 속성 값이 같은 경우, 두 인스턴스틑 같은 객체라고 판단되어야 하기에 equals(), hashcode()를 오버라이딩하는 것이 핵심이다.
[DTO : Data Transfer Object]
- 계층 간 데이터 교환을 위해 사용되는 전송 객체
- 기능 구현에 쓰일 필요한 속성들만 추려 사용해야 하는 경우에 쓰인다.
- 데이터를 담고, 꺼내는 getter/setter 메서드만 갖는다.
[Entity]
- 실제 DB 테이블과 매핑되는 객체이다.
- 해당 클래스는 상속받거나 구현체에 속해서는 안된다.
| 정리
- VO : 값을 갖는 순수한 도메인
- DTO : 계층 간 데이터 이동을 위해 사용되는 객체
- Entity : DB 테이블과 매핑되는 객체