DB의 데이터에 접근하기 위한 객체를 뜻한다.
DB에 접근하기 위한 로직을 분리하기 위해 사용한다.
직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
데이터를 전달하기 위한 객체
DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)
여러 Layer 간 데이터를 주고 받을 때 사용할 수 있고 주로 View와 Controller 사이에서 활용
VO는
값 오브젝트로써 값을 위해 쓰인다.
Read-Only 특징 (사용하는 도중에 변경 불가능하며 읽기만 가능)을 가진다.
DTO와 유사하지만 VO는 getter 기능만 존재한다.
DTO는 인스턴스 개념이고 VO는 리터럴 값 개념이다.
VO는 값들에 대해 Read-Only를 보장해줘야 존재의 신뢰성이 확보되지만 DTO의 경우는 단지 터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐이다.값 자체에 의미가 있는 VO와 전달될 데이터를 보존해야하는 DTO의 특성상 개념이 다르다.