Dto vs Entity vs VO 의 차이

강성관·2025년 4월 27일

알고 쓰는 웹 기술

목록 보기
3/3

DTO와 Entity의 차이

구분DTO (Data Transfer Object)Entity
역할계층 간 데이터 전달용 (Controller ↔ Service ↔ Repository)DB 테이블과 1:1 매핑 (Persistence 대상)
목적데이터 이동 최적화, 네트워크 비용 절감DB 저장/조회/수정/삭제를 직접 담당
특징- 주로 getter/setter만 가짐
- 비즈니스 로직 없음
- 필요한 데이터만 담음
- JPA/Hibernate에서 관리
- @Entity 어노테이션 붙음
- DB와 직접 연관
변경 가능성자유롭게 변경 가능 (UI/API 요구사항에 맞춰)변경 신중 (DB 스키마에 영향)
예시회원가입 요청 DTO, 게시글 응답 DTO 등Member, Post, Comment 등

DTO와 VO의 차이

구분DTO (Data Transfer Object)VO (Value Object)
역할데이터 전달용 객체 (주고받기 위함)값 자체를 표현하는 객체 (의미와 불변성 중심)
목적계층 간 통신 최적화고유한 값 표현, 비교 및 불변성 보장
특징- 보통 가변(mutable) 객체
- setXxx()로 수정 가능
- 불변(immutable) 객체
- 값이 같으면 객체 자체가 같다
- 생성 시 값이 정해지고 변경 불가
사용 예시요청/응답 DTO, 폼 데이터 수집용 DTO좌표(Point), 주소(Address), 금액(Money) 등
대표적 차이"데이터 전달"이 목적"값 자체"가 목적

한 줄 요약

  • DTO vs Entity: 데이터 전달 vs 데이터 저장
  • DTO vs VO: 데이터 전달 vs 값 자체

최종 요약 (직관적으로)

VO = "값 그 자체"를 표현하는 불변 객체 (ex. 좌표, 금액, 주소)
VO는 "값이 같으면 같은 객체" (주소가 아니라 값 자체 비교)

DTO = 필요한 데이터만 골라 실어나르는 객체 (ex. 회원가입 요청 DTO)
DTO는 "가변적" (필요한 데이터만 골라 담는다)

Entity = DB랑 1:1로 연결된 JPA 관리 객체 (ex. Member 테이블 매핑)
Entity는 "DB 변경을 조심" (Entity 구조가 바뀌면 DB 스키마에 바로 영향!)

profile
함께 공부해요!

0개의 댓글