VO/DTO
Updated:
VO / DTO
VO(Value Object)
- 데이터 그 자체로 의미 있는 것을 담고 있는 불변의 객체
- Read-Only 속성 객체 (그래서 getter만 존재)
- 간단한 독립체(Entitiy)를 의미하는 작은 객체
- DBMS의 레코드에 대응되는 자바 클래스
- 상태가 있는 객체가 아니라 시간이 지나도 변하지 않는 값으로 취급하는 객체. ex) 사람, 돈
DTO(Data Transfer Object)
-
전송되는 데이터의 컨테이너. 자바 빈즈를 의미
-
VO와 동일하게 데이터를 저장하여 사용하는 부분에서 필요
-
VO와 다른 점은 같은 시스템이 아닌 다른 시스템에 전달하는 작업에서 사용
-
Layer간의 통신 용도로 오가는 객체를 말한다.
-
getter, setter 모두 있음
-
서로 간의 데이터를 전달하는 용도로 쓰이기 때문에 언제든지 상태가 변경됨
-
그래서 DB에 접근 할때는 DTO를 쓴다. 왜냐하면 DB는 언제든지 상태가 변경 되기 때문
-
예시는 다음과 같다
-
Database Column Data -> DTO -> API(JSON or XML) -> Client
두 개의 차이점
-
TDD 책의 경우 DTO로 통칭한다고 함. 요즘
- Core J2EE Patterns 라는 책에서는… Value Object랑 Transfer Object를 동일한 뜻으로 사용
- Martin Folwer 저서 Patterns of Enterprise Application Architecture에서는 DTO는 메소드 호출 횟수를 줄이기 위해 데이터를 담고 있는 객체. VO는 값이 같으면 동일 Object라고 함.
- 예시
DTO a = new DTO(1);
DTO b = new DTO(1);
// 이때 a와 b는 다름
VO a = VO(1);
VO b = VO(1);
// 이때 a와 b는 같음