네로개발일기

개발자 네로의 개발 일기, 자바를 좋아합니다 !

반응형

DTO(Data Transfer Object)

계층(Layer)간 데이터를 교환하기 위한 객체

DTO의 특징

1. DTO는 데이터 접근 메서드 외 기능을 가지고 있지 않는다. (getter, setter 메서드 외에 비즈니스 로직을 가지지 않는다.)

- 정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있다.

2. 값을 유연하게 변경할 수 있다. (가변성, mutable)

3. 데이터 캡슐화를 통해 유연한 대응이 가능하다.

- 데이터 요청 수 감소 효과

 

VO (Value Object)

값을 가지는 객체

VO의 특징

1. 변하지 않는 값을 가지는 객체(불변성, immutable)

- 값이 변하지 않음을 보장하며 코드의 안정성과 생산성을 높임

2. 값이 같다면 동일한 객체

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

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

- equals() 메서드와 hashCode() 메서드를 오버라이드해서 객체 비교를 구현함

 

공통점 및 차이점

공통점

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

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

차이점

DTO VO
값이 변할 수 있음 (가변 객체) 값이 변하지 않음 (불변 객체)
레이어와 레이어 사이에서 사용 가능 모든 레이어에서 사용 가능
내부의 속성(필드)값이 같아도 다른 객체로 식별 내부의 속성(필드)값들이 같다면 같은 객체로 식별
데이터 접근 이외의 기능을 가지지 않음 특정 비즈니스 로직을 가질 수 없음

 

 참고 

https://parkadd.tistory.com/53

 

DTO와 VO 둘 의 사실과 오해 (그리고 Entity)

보통 DTO == VO 즉, DTO와 VO는 혼용해도 된다, DTO와 VO는 같은것이다. 라는 오해가 많이 있습니다. (그런 오해를 가진 분들을 위한 글입니다!! 이미 알고 계신분은 글을 읽고 검수 해주시면 더욱 감사

parkadd.tistory.com

 

728x90
반응형
blog image

Written by ner.o

개발자 네로의 개발 일기, 자바를 좋아합니다 !