Value Object는 DTO와 동일한 개념이지만 차이점은 read only속성을 갖습니다.
Value Object는 관계 데이터 베이스의 레코드에 대응되는 자바 클래스 입니다.
형태는 DB 레코드를 구성하는 필드들을 Value Object의 Attribute로 하고 해당 변수에 접근할 수 있는 Getter,Setter 메서드의 조합으로 클래스가 형성되어진 클래스입니다.
특성은 대체로 불변성이고, equals()로 비교할 때 객체의 모든 값을 비교해야 합니다.
프로그램의 사용자가 화면에서 어떤 데이터를 입력하거나 조회 요청이 왔을 때 입력된 데이터나 조회하는 조건을 VO에 담아서 DTO에 요청하면 DAO는 저장소(Database)로부터 데이터를 입력하거나 조회한 후 그 결과를 돌려주게 됩니다.
VO는 간단한 독립체(Entity)를 의미하는 작은 객체를 의미합니다.
VO의 같음은 그 정체성에 의해 결정되지 않는데, 그 뜻은 두 VO들은 그 두가지가 같은 값을 갖고 있을 때 같은 것이지 같은 객체라고 해서 같지 않다는 것입니다.
같은 독립체를 대변하는 복수의 같은 VO들이 존재할 수 있습니다.
가끔 하나의 인스턴스에 의존하고 그에 기반한 레퍼런스를 사용하기 보다는 새 객체를 생성하는 것이 더 간편합니다.
데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 개체입니다.
DATA에 접속하는 객체입니다.
여기서 DATA란 일반적인 Database도 될 수 있고, 파일도 될 수 있으며,메모리도 될수 있고, 기타 다른 저장소도 될 수 있습니다.
DTO는 프로세스 사이에서 데이터를 전송하는 객체를 의미합니다.
이용하는 이유는 프로세스 간의 커뮤니케이션이 주로 개별 호출이 부담스러운 작업일 경우가 많은 원격 인터페이스(Web Service)에 의해 이루어지기 때문입니다.
대부분의 개별 호출이 클라이언트와 서버간 왕복 시간을 소모하기 때문에, 호출 횟수를 줄이는 방법 중 하나는 몇번의 호출에 의해 전송된 데이터를 모으는 DTO를 이용해서 한번만 호출하게 하는 것이기 때문입니다.
DTO a = new DTO(1);
DTO b = new DTO(1);
VO a = VO(1);
VO b = VO(1);