[테크 톡 - 14주차] DTO와 VO

728x90

 

 📌 DTO란?

- Data Transter Object 

- 순수하게 데이터를 담아 계층간으로 전달하는 객체

- 데이터 전달 용도로만 사용하기 때문에 Getter, Setter로직만 필요하며 다른 로직이 필요하지 않다.

- 필드값이 같아도 같은 객체로 보지 않는다.

- 값의 변조를 막고 싶다면 생성자를 통해 불변 객체로 만든다.

 

 

 📌 VO란?

- Value Object

- 값 자체를 나타내는 객체 Read Only 특징을 가진다. 

- 다른 이름을 갖는 VO 인스턴스라도 모든 속성 값이 같다면 두 인스턴스는 같은 객체로 본다.
  이로 인해 주소값을 비교하는 경우 hashcode()와 equals()를 재 정의하여 필드값이 같다면 같은 객체로 인식 될 수 있도록 해 준다.

- Getter, Setter이외의 로직이 있어도 상관없다.

 

 

 📌 DTO와 VO의 차이점

- DTO는 데이터 계층관 교환에 의미가 있고, VO는 데이터 그 자체에 의미를 두고 있다. 
 ( 즉, VO는 Setter가 없다. ) 

 

 

 💌 Reference

- https://maenco.tistory.com/entry/Java-DTO%EC%99%80-VO%EC%9D%98-%EC%B0%A8%EC%9D%B4

- https://kbwplace.tistory.com/162

- https://youngjinmo.github.io/2021/04/dto-vo-entity/

- https://kafcamus.tistory.com/13

728x90