[Spring] DTO와 VO의 차이

subbni·2023년 5월 7일

DTO (Data Transfer Object)

DTO는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, 로직을 가지지 않는 순수한 데이터 객체이다.

  • getter/setter 정도의 메서드만 갖는다.
  • DB에서 데이터를 얻은 뒤 Service나 Controller 등으로 보낼 때 사용한다.
  • 데이터를 담는 그릇의 역할을 한다.
  • 엔티티를 DTO 형태로 변환한 뒤 사용한다.

VO (Value Object)

VO는 DTO와 달리 Read-Only 속성을 지닌 값 오브젝트이다. DTO와 달리 getter의 메서드만 갖고 있어 수정이 불가능하다.

  • 데이터 값 자체를 표현하기 위한 객체이다.
  • 속성값이 모두 같으면, 같은 객체이다.
    -> equals()와 hashCode() 두 메서드를 모두 오버라이딩하여 비교하여 둘 다 같다면 같은 객체로 처리한다.
  • setter 메서드를 가질 수 없고, 오직 생성자를 통해서만 값을 초기화해야 한다.
  • getter 이외에 다른 로직이 포함된 메서드를 가질 수 있다. (setter는 당연히 안 됨)

참고 : https://dkswnkk.tistory.com/500

profile
개발콩나물

0개의 댓글