LinkedIn

DTO vs VO

2020. 11. 1. 13:51 | 자바 개발자되기

DTO

  • 계층 간 데이터 전송을 위해 사용하는 객체로 상태 값을 리턴하거나 수정이 가능
    • 단, 객체에 대한 처리(로직)를 포함하고 있지 않음
  • 즉, DTO는 초기 설정 된 데이터가 지속적으로 보존 될 것이라느 것을 보장할 수 없음
  • Controller → Service 호출 시 Layer 간 데이터 전달이기에 DTO 사용

VO

  • 값이 변경될 수 없는 객체로 값이 같다면 동일한 객체로 취급
  • DTO와의 가장 큰 차이점은 초기 객체에 설정 된 값이 변경 될 수 없다는 것과 값이 같으면 같은 객체로 취급한다는 점
    • 계층 간 데이터를 전달할 때 일반적으로 DTO를 사용하지만 만약 Source에서 설정한 값과 해당 데이터를 전달 받을 Destination에서의 값이 변경되지 않고 같음을 보장하고자 한다면 선택적으로 VO를 사용할 수 있음