[Spring] DTO vs VO 차이

limlim·2024년 5월 26일
0

Spring

목록 보기
8/8

서론

  • 스프링 공부를 시작하면서 어떤 곳에서는 DTO를 사용하고, 어떤 곳에서는 VO를 사용하는 것을 보고 개념을 명확히 할 필요가 있다고 생각해 아래와 같이 정리하였다.

DTO (Data Transfer Object)

  • 계층 간 데이터 교환을 위한 객체임
    (여기서 계층이란 Controller, View, Business, Persistent 레이어 등을 말함)
  • 데이터 교환을 목적으로 갖는 객체이므로 서비스 로직을 갖고 있지 않음
  • @Getter, @Setter로 데이터 조작, 가져오기 가능
  • Lombok 라이브러리를 활용하면 가독성이 훨씬 좋아질 수 있음
// 3개 다 Lombok에 있는 걸로 @Getter 또는 @Setter를 선언해줄 경우, 모든 필드에 접근자와 설정자가 자동으로 생성됨
// @ToString은 객체가 가지고 있는 정보나 값들을 문자열로 만들어줌

@Getter
@Setter
@ToString

// MemberDTO
public class MemberDTO {
    private Long id;
    private String memberEmail;
    private String memberPassword;
    private String memberName;
    private int memberAge;
    private String memberMobile;
}

VO (Value Object)

  • DTO와 같이 많이 듣게 되는 개념으로 VO는 DTO와 다르게 setter가 존재하지 않음
  • DTO는 데이터 조작이 가능하지만, VO는 데이터를 담아서 이동만 함. 또한 새로운 값을 사용하기 위해서는 새로이 객체를 생성해야함
  • 즉, VO는 중간에 데이터 조작이 안되며, 읽기만 가능함

추가 개념) Entity

  • DB 테이블과 1:1 매핑되는 객체
  • JPA 사용 시 주로 사용됨
  • DTO와 분리하여 사용하여야 함

생각해볼 문제

  • 실무에서 DTO든 VO든 많이 사용하는데 이는 데이터 전달의 효율성을 위해 어쩔 수 없는 선택인가?
profile
不怕慢,只怕站 개발자

0개의 댓글