스터디/테크톡
[테크 톡 - 14주차] DTO와 VO
냠냠쿠
2023. 9. 13. 19:45
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
728x90