본문 바로가기
영상 후기/기타

영상 후기 - [10분 테코톡] 📍인비의 DTO vs VO

by 올리브영 2023. 4. 24.
728x90
반응형

movie

 

1. 결론 먼저!!

DTO = 데이터 전달용

VO = 값 표현용

 

 

2. DTO란?

  • Data Transfer Object
  • 데이터를 전달하기 위해 사용하는 객체
  • 데이터를 담아서 전달하는 바구니

계층 간 데이터를 전달하기 위한 객체

 

  • 오직 getter/setter 메서드 만을 갖는다
  • 다른 로직을 갖지 않는다.
    • 순수하게 데이터를 전달하기 위한 목적이기 때문이다.
  • Setter를 없애고, 생성자를 통해서 초기화를 해서 불변 객체로 만들면 DTO가 전달하는 데이터가 전달 과정중에 변조되지 않음을 보장할 수 있다.

 

DTO 클래스와 Entity 클래스를 분리하라

Entity 클래스는 절대로 요청이나 응답 값을 전달하는 클래로 사용하면 안된다.

  • Entity 클래스는 DB와 맵핑되는 핵심 클래스이기 때문이다.

 

 

3. VO란?

  • Value Object
  • 값 그 자체를 표현하는 객체 - 불변 객체
    • 생성자를 통해서만 값을 초기화 해야한다.
  • 실생활의 VO 예시 - 돈 -> 돈의 고유번호 다르다고 해서 다른 만원이라고 표현하지 않는다.
    • 값 그자체만을 나타내고 값으로만 비교되는 객체를 VO라고 한다.
  • 다른 로직을 포함할 수 있다.

equal 메서드와 hashCode 메서드를 모두 오버라이딩 해줘야 한다.

 

 

4. DTO vs VO

 

728x90
반응형