Spring - (1) : DTO vs VO

­이승환·2021년 11월 26일
0

spring

목록 보기
1/26

서론


기존 Express 서버를 지속적으로 개발해가면서 스프링부트에도 많은 관심을 갖고 있었다.
코딩테스트에서만 사용하던 자바, 스프링에서 사용되는 언어의 불친절함(Bean, IoC, Container, 여러 annotation...) 으로 인해 API 서버는 노드로 선택했지만, 서버 엔지니어가 되기 위해서는 필수적인 요소라고 생각해서 사이드프로젝트로 함께 진행해보고자 한다.

DTO란

  • Data Transfer Object
  • 데이터 전달용 객체라고 이해하면 됨
  • View에서 요구하는 데이터를 최종적으로 알맞게 담아 View에 넘겨주는 객체로, 적절한 데이터를 가져다가 조립하듯이 DTO에 알맞게 담아서 넘기면 된다.
  • 참고로 그럼 JPA에서 관리하는 모델은 무엇인가? 고민이 된다면 domain model 을 찾아보자!

위와 같이 기본적으로 Spring 은 MVC 형태를 근간으로 해서 여러 레이어와 함께 역할을 나눠놓고 관리한다. 이게 확실히 유지보수에 큰 도움이 된다. 여기서 DTO는 해당 레이어 간에 데이터를 전달하는 객체라고 생각하면 좋다.
클라이언트가 요청이 들어오면 내부 비지니스 로직을 처리 후, json 형태로 response 를 전달하는 만큼 일반적으로 getter, setter 만 존재한다. (심지어 setter는 없고 생성과 함께 처리하는 경우도 부지기수)

VO란

  • 값 그 자체, 불변한 성질을 가지고 있음
  • 예시1 : 계좌에서 돈
  • 예시2 : 로또번호의 이번회차 정답
  • View에서 요구하는 데이터들 중에 Vo가 포함되어 있으면 VO를 바로 json으로 전달하는 것보다 DTO로 바꿔 주는 것도 하나의 방법
  • DTO와 다르게 비즈니스 로직에 해당하는 메서드를 포함하고 있는 경우도 존재한다
  • 값 그 자체인 만큼 동등성과 동일성을 비교해줄 필요가 있음, 따라서 equals를 오버라이드해서 내부 iv가 동일하다면 동일한 처리를 해주는 세심함이 필요
profile
Mechanical & Computer Science

0개의 댓글