송민준의 개발노트

DTO vs VO 본문

우아한테크톡

DTO vs VO

송민준 2021. 7. 28. 02:03

본 글은 우아한Tech 유튜브 채널을 본 것을 기반으로 정리한 글입니다.

https://www.youtube.com/watch?v=EeJnNaiMy3U 

DTO와 VO란 어떻게 다를까??

우선 DTO(Data Transfer Object)는 레이어 간에 데이터를 전달하는 객체이다. (ex. 시험칠 때 OMR카드)

특징으로는

- 데이터 접근 메서드 외에 기능을 가지지 않음. (정렬, 직렬화 등 데이터 표현을 위한 기능을 가질 수는 있음)

- 데이터의 캡슐화를 통해 유연한 대응이 가능함 (데이터 요청 수 감소 효과)

 

VO(Value Object)는 값을 가지는 객체이다.

특징으로는

- 값 자체로 의미를 가지는 객체

- 변하지 않는 값을 가지는 객체(값이 변하지 않음을 보장하여 고도의 안정성과 생산성을 높임)

- 값이 같다면 동일한 객체

  -> 각 개체를 비교하는 데 사용되는 ID가 없음

  -> 같은 객체인지 판단하기 위해 각 속성들의 값을 비교함.

 

공통점

- 레이어 간 데이터를 전달할 때 사용 가능

  (VO는 불변을 보장하기 때문에 데이터 전달 용도로 사용 가능)

 

차이점

DTO VO
값이 변할 수 있음 값이 변하지 않음
레이어와 레이어 사이에서 사용 모든 레이어에서 사용 가능
DTO dto1(1) != DTO dto2(1) Vo vo1(1) == VO vo2(2)
데이터 접근 이외의 기능을 가지지 않음 특정한 비즈니스 로직을 가질 수 있음.

 

 

https://song8420.tistory.com/383

 

Spring DTO 관리 패턴에 대한 고민

공부할 때나 실무에서나 개발을 하다보면 정신없게 늘어만 가는 DTO를 보고 어떻게 줄일 수 없을까라는 생각을 하게 된다. 너무 많아져 IDE의 도움 없이는 찾지도 못할 수준이 되는 프로젝트도 있

song8420.tistory.com

 

'우아한테크톡' 카테고리의 다른 글

Spring과 SpringBoot의 차이  (0) 2021.07.25