DTO vs VO vs Entity

Jane·2021년 4월 24일
0

DTO (Data Transfer Object, 데이터 전송 객체)

  • 계층 간 데이터 교환을 위해 사용하는 객체
  • 로직을 갖고 있지 않은 순수한 데이터 객체
  • getter/setter 메서드만을 갖는다.
  • 가변 객체 (생성 후 상태 변경 가능)

VO (Value Object, 값 객체)

  • 값 그 자체를 표현하는 객체
    → 서로 다른 이름을 가진 VO 인스턴스의 모든 속성 값이 같다면 같은 객체이다
    (전제 조건: equals와 hashcode 오버라이딩)
  • 객체의 불변성 보장
  • 로직 포함 가능

Entity

  • 실제 DB 테이블과 매핑되는 클래스
  • Id로 구분
  • 로직 포함 가능
  • 가변 객체

Tips

  • DTO를 VO와 같은 불변 객체로 사용하면 DTO가 전송하고자 하는 데이터가 전송 과정 중에 변조되지 않음을 보장할 수 있다.
  • View의 속성값 변경으로부터 Entity의 순수성을 보호하기 위해서는 DTO와 Entity 클래스를 분리하는 것이 좋다.

Source

0개의 댓글