티스토리 뷰

spring boot

[spring boot] DTO, VO

햄밥김치참치버거 2026. 4. 12. 01:32

● DTO(Data Transfer Object)

→"계층 간 데이터 교환을 위한 객체"

▶ 로직을 가지지 않고 setter/getter 메소드만 가진 순수 데이터 객체 클래스

DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용

Controller <-> Service <-> Repository 간 데이터 전달에 사용

DTO는 setter가 있어 값 변경이 가능


● VO(Value Object)

→"변경 불가능하며 오직 읽기만 가능"

DTO는 setter를 가지고 있어 값을 변경할 수 있지만, VO는 getter만을 가지기 때문에 읽기만 가능하고 수정은 불가

VO는 필드가 final이고 setter가 없음 > 변경 불가능

equals(), hashcode()를 오버라이드(재정의)해 객체의 동등성 비교

(그냥 private만 있어도 VO만들 순 있음.

벗, VO에서 불변성을 보장하는 것이 중요

VO는 값 자체를 의미하는 객체이므로, 한 번 생성되면 값이 변경되지 않아야 함.)


구분
DTO
VO
목적
데이터 전송
값 자체를 표현
변경 가능성
변경 가능(setter O)
변경 불가능(final 필드)
동등성 비교
참조(주소) 비교
값 비교(equals() )
로직 포함 여부
X(로직 없음)
o(로직 포함 가능)
사용 사례
Controller <-> Service <-> Repository
엔티티 내 불변 값 표현

DTO : 데이터를 계층 간 전송하는 객체

VO : 값 자체를 의미하는 불변 객체

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함