[Spring] DTO, VO, Entity 특징 및 차이점

LDB·2024년 10월 30일
0

Spring

목록 보기
5/6
post-thumbnail

DTO, VO, Entity는 Spring 공부하면서 많이 봐왔고 자주 쓰지만 각각 어떤기능과 특징을 가지고 있는지 지식을 정리하는 차원에서 글을 쓰게 되었는데 자료를 찾아본 결과 내가 아는 내용이 대부분 이었지만 모르는 부분도 있어서 좋은 기회라고 생각한다.

DTO (Data Transfer Object)

  • 데이터를 전달하기위한 객체이다.
  • getter / setter가 존재하기 때문에 객체의 값을 읽거나 쓰는 기능이 있다.
  • controller, service, repository 모든 부분에서 쓰일 수 있다.
  • DTO는 보통 가변객체로 사용하지만 상황 따라 불변객체로 사용이 가능하다.
  • 가변DTO는 비즈니스 로직을 포함을 안하고 불변DTO는 비즈니스 로직이 포함 가능하다.

VO (Value Object)

  • VO는 순수히 값을 읽기 용도만 가능한 객체이다.
  • DTO와 다른점이 있다면 setter가 없다.
  • controller, service, repository 모든 부분에서 쓰일 수 있다.
  • 명시적으로는 VO는 값을 넣을 수 없다고는 하지만 VO에도 값을 넣을 수는 있다.
  • 비즈니스 로직 포함이 가능하다.

Entity

  • 실제 DB Table과 매핑이 되는 객체이다.
  • Entity를 선언하면 실행 할 때 Entity에 작성한대로 테이블이 자동으로 생성되고, 컬럼이 변경되기도 한다.
  • 주로 service, repository에서 많이 사용된다.
  • 사용할 때 주의할 점은 Entity를 데이터를 입력할 때 사용하면 안된다.
  • 객체안에 비즈니스 로직을 포함이 가능하고 setter를 포함할 수도 있다.

최종정리

결과적으로 VO, DTO, Entity를 간단하게 정리하면 아래의 표가 되겠다.

설명getter / setter 여부비즈니스 로직 포함 여부
가변 DTO (Data Transfer Object)데이터를 읽기 혹은 쓰기를 위한 객체getter / setter 모두 가능X
불변 DTO (Data Transfer Object)데이터를 읽기만을 위한 객체getter만 가능O
VO (Value Object)데이터를 읽기만을 위한 객체getter만 가능O
Entity데이터베이스의 테이블과 매핑되는 객체getter / setter 모두 가능O

참고 게시글

https://ccomccomhan.tistory.com/35

profile
가끔은 정신줄 놓고 멍 때리는 것도 필요하다.

0개의 댓글

관련 채용 정보