본문 바로가기
Spring

VO와 DTO란(VO vs DTO 차이)

by chief_sac 2021. 7. 25.
반응형
더보기

 

Spring에서 사용되는 MVC패턴을 다시한번 공부하며 상기시키다가 문득 궁금해진 Domain Layer의 계층간 이동에서 사용되는 데이터를 가지는 이 객체는 왜 다양한 이름으로 가질까 하는 궁금증에 공부한 것을 바탕으로 정리해 보았다.

 

- 공부하며 여러가지 말들이 많았지만 확실성이 상대적으로 높지 않은 블로그 글들보다는 우아한 태크의 라흐님의 말에 의한 정보를 많이 수용하였다.

 

💡 개념


VO : Value Object의 약자로 값을가진 객체라는 의미를 가지고있다.
DTO : Data Transfer Object의 약자로 데이터이동이라는 의미를 가지고 있다.

 

  • 공통점
    • 레이어(계층간) 데이터를 전달할떄 사용된다.

 

  • 차이점
DTO VO
- 값이 변할 수 있다.

- Layer와 Layer의 사이에서 사용가능하다.

- DTO dto1(1)  !=  DTO dto2(1)

- 데이터 접근 이외의 기능을 가지지 않는다.
- 값이 변하지 않는다.

- 모든 레이어에서 사용이 가능하다.

- VO vo1(1) == VO vo2(1)

- 특정한 비지니스 로직을 가지고 있을수 있다.

 

 

 

 

DTO의 특징


 

  • 데이터 접근 메서드 이외의 기능을 가지고 있지 않다 (Setter와 Getter로 이루어져있다)
  • 정렬과 직렬화 등 데이터 표현을 위한 기능을 가질수 있다.
  • 데이터의 캡슐화를 통한 유연한 대응이 가능하다.
  • 위와 같은 특징으로 데이터의 요청 수를 컨트롤할수있다.

 

 

 

VO의 특징


 

  • 값 자체로 의미를 가지는 객체
  • 변하지 않는 값을 가지는 객체이다. →값이 변하지않음을 보장하고 코드의 안전성과 생산성을 높여줄수있다.
  • 값이 같다면 동일한 객체이다. →각 객체를 비교하는데 사용되는 ID가 없다. →같은 객체인지 판단하기 위해서는 각 속성들의 값을 비교하여야한다.
반응형