반응형
MVC 패턴은 Spring을 처음 접할 때 가장 먼저 배우는 기초적인 패턴입니다. 그 구조에서 메서드와 메서드 간에 데이터를 전달할 때 DTO, 또는 VO의 형태를 사용합니다. 그러나 이름마저 비슷한 이 둘은 도대체 어떤 차이가 있는 건지 처음 배우는 입장에서는 헷갈리기만 합니다. 오늘은 DTO와 VO의 차이에 대해서 알아보도록 하겠습니다.
DTO란?
우선 DTO는 Data Transfer Object(데이터 전송 객체)로 계층 간에 데이터 교환을 위해서 사용하는 객체입니다. 여기서 계층이란, MVC 패턴의 Controller, Service, Repository를 뜻합니다.
DTO는 로직을 갖고 있지 않은 순수한 데이터 객체 이며, 안의 field가 변해도 되기 때문에 보통은 Getter와 Setter 메서드만 가지고 있습니다.
VO란?
VO는 Value Object로 데이터 값 그 자체를 표현하는 객체입니다. DTO와 다르게 객체의 불변성을 보장하고, 로직을 포함할 수도 있습니다.
DTO vs. VO
DTO | VO | |
목적 | 데이터 전달 | 값 표현 |
동등성 | 필드 값이 같아도 같은 객체 X | 필드 값이 같으면 같은 객체 |
가변성 | 가변성 있음 | 불변 |
로직 | X | 로직이 있어도 괜찮음 |
몇 개의 차이가 있지만, DTO와 VO를 혼용해서 사용하는 경우도 많다고 합니다. 그러나 역할이 구분이 되어 있으니 각각의 특성애 맞게 사용하는 것이 제일 좋은 방법이지 않을까 싶습니다.
반응형
'Java & Spring Boot' 카테고리의 다른 글
당신이 Raw type을 지양해야 하는 이유 (0) | 2023.02.12 |
---|---|
실전, MVC 패턴! (1) | 2022.10.01 |
Java Stream과 for문은 무엇이 다를까? (0) | 2022.08.18 |
Java를 버전 별로 비교해보자 (0) | 2022.08.01 |
SOLID 원칙을 이해하기 쉽게 알아보자 (0) | 2022.06.22 |