# 1. Language/☕ Java

DTO와 VO

둥굴둥굴둥굴레차 2021. 9. 20. 23:52

DTO

Data Transfer Object

계층간 데이터 교환을 위한 객체(Java Beans)이다. 즉, 데이터를 객체로 변환시킨다.

 

C#과는 달리 Java에서는 프로퍼티를 문법적으로 제공해주지 않기 때문에 getter/setter에서 get과 set 다음에 나오는 단어가 프로퍼티라고 약속해주었다.

즉, getter/setter에 의해 만들어진 것에 의해 프로퍼티가 결정된다는 말이다.

 

자바에서는 다양한 프레임워크에서 데이터 자동화 처리를 위해 리플렉션 기법을 사용한다.

그런데 이 데이터 자동화 처리에서 가장 중요한 것이 표준규격이다.

즉, DTO에서 프로퍼티가 name, age면 여기에 키값으로 들어온 데이터는 리플렉션에 의해 setter를 실행시켜 데이터를 넣을 수 있는 것이다.

 

그런데 setter를 우리가 요쳥하는게 아니라 프레임워크단에서 알아서 실행이 되기 때문에 레이어간 데이터를 넘기면 데이터가 자동적으로 클래스화되기 때문에 DTO를 사용해주면 편하다.

 

키 밸류로 존재하는 데이터는 자동화 처리된 DTO로 변환되어 손쉽게 데이터가 셋팅된 객체를 받을 수 있다. 

 

 

VO

Value Object

사용 되는 값이 객체로 표현 되며, 값 변경이 없는 경우를 말한다.

DTO와 달리 read only 속성을 가진다.

DTO는 인스턴스 개념인데 반해 VO는 리터럴과 비슷한 개념이다.

DTO는 Layer간의 통신 용도로 오고가는 객체를 말하고, VO는 특정한 비즈니스 값을 담는 객체이다.