DTO (Data Transfer Object)
@Getter
@Builder
public class TravelPlanDTO
{
private String travelCode;
private String title;
private String location;
private String img;
private LocalDate startDate;
private LocalDate endDate;
private int expense;
private String founder;
private Set<String> participants;
private boolean isCalculate;
private List<String> profiles;
private Number currentCurrency = 0;
}
• 계층 간 데이터 교환을 위해 사용하는 객체 |
• 데이터 전달 목적으로만 사용되므로 다른 로직을 가지지 않는 순수한 데이터 객체 |
• 일반적으로 getter/setter 메서드로만 구성 |
• 데이터베이스 조회 결과를 담아 전달하거나 전달 받는 역할을 담당함 |
VO (Value Object)
public final class Point {
private final int x;
private final int y;
/**
* Point 객체를 생성합니다.
* @param x x 좌표
* @param y y 좌표
*/
public Point(int x, int y) {
this.x = x;
this.y = y;
}
// Getter 메서드들
public int getX() {
return x;
}
public int getY() {
return y;
}
}
DTO와 유사하지만, VO는 read-Only 속성을 갖고 있는 객체 |
값 자체를 표현하는 불변(immutable) 객체로 한 번 생성 되면 내부 값을 변경할 수 없음 |
equals() 와 hashCode() 메서드를 오버라이드하여 값 비교 수행 |
DTO vs. VO
DTO (Data Transfer Object) | VO (Value Object) | |
목적 | 계층간 데이터 전송 | 도메인 내 값 표현 불변의 복합 값 표현 |
동등성 | 일반적으로 참조 동등성 속성값이 같아도 다른 객체로 취급 가능 |
값 동등성 속성 값이 같으면 같은 객체 취급 |
가변성 | 일반적으로 가변(mutable) setter 메서드를 통한 속성 변경 가능 |
불변(immutable) 생성후 내부 상태 변경 불가 |
로직 | 비즈니스 로직을 포함하지 않음 주로 getter/setter 만 포함 |
간단한 도메인 로직 포함 가능 값과 관련된 연산이나 검증 로직 포함 가능 |
'국비지원 공부 정리 > SpringBoot' 카테고리의 다른 글
스프링부트의 의존성 주입 (@Bean, @Configuration, @Component, @Autowired (0) | 2025.04.11 |
---|---|
Spring Boot를 이용해 데이터 주고받기 (0) | 2025.04.10 |
REST API (0) | 2025.04.10 |
Thymeleaf 란? (0) | 2025.04.10 |
Spring MVC (0) | 2025.04.10 |