WEB

DTO vs VO

이충무 2022. 9. 21. 01:26

DTO


DTO(Data Transfer Object)는 각 계층간에 (MVC) 데이터 교환을 위한 객체다. 로직을 가지지 않는 데이터 객체이고 Getter와 Setter 메서드만 가진 클래스를 의미한다. 요청이나 응답 값을 전달하는 용도로 많이 사용한다.

 

VO


VO(Value Object)는 불변 클래스로, Read-Only 속성만을 가지고 있다.VO는 Setter 와 같이 값을 변경하는 메서드는 가져서는 안되고 생성자로만 값을 초기화해야하고 Getter 와 같이 값을 조회하는 메서드만 사용해야한다. 

즉, 값 자체를 표현하는 객체이다. 추가적으로, VO는 불변 객체이기에 equals() hashcode()를 오버라이딩하는 것은 필수라고 볼 수 있다. 그리고 다른 VO여도 값 자체를 나타내기때문에 두개는 같은 객체라고 할 수 있다. -> setter가 가지면 안되는 이유를 생각하면 답이 나온다!!