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는 같음

Tags: ,

Categories:

Updated: