고딩왕 코범석

DTO란? 본문

Language & Framework/Spring

DTO란?

고딩왕 코범석 2020. 10. 30. 14:43
반응형

첫 포스팅이다 잘해보자ㅠㅠ

 

오늘 내가 정리해볼 내용은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 를 공부하면서 각 계층에 대한 용어들을 정리해보는 포스팅이다..! 부족하겠지만 만약 제가 틀린 정보 및 부족한 부분이 있다면 댓글로 꼭 피드백 부탁드립니다 감사하고 달게 받겠습니다.

 

사실 나는 국비지원 학원을 다녔던 사람으로써 Spring, MyBatis를 활용하여 웹 프로젝트를 했던 경험이 있다. 하지만 내 목표는 서비스 회사에 입사를 하는것이고, 서비스 회사들의 기술스택은 대부분 ORM을 사용한다더라! 해당 책은 JPA를 바탕으로 서비스에 대한 기능들을 구현하는데 갑자기 혼동이 생겼다!

DTO??? 도메인???? 엔티티??????? 나는 vo, service, dao만 알고있었는데... 엄청 생소했다.

 

마침 잘됐네, 이왕 이렇게 된거 하나씩 알아가보자.

부족하면 뭐 어때 채우면 그만이지!

DTO(Data Transfer Object)

DTO란? Data Transfer Object로 내가 학원에서 배웠던 VO(Value Object)와 비슷한 용어이다. 다만 차이점이 있다!!

우선, 이 둘은 계층간 데이터 이동을 위한 자바 Beans라 이해하면 된다.

계층간 이동이라 함은 이 DTO나 VO를 들고 Controller, View, Business Logic 등등을 다녀가며 데이터를 교환하는 Beans라 이해했다.

 

즉, 클라이언트가 Request할 경우, 또는 서버가 데이터베이스에서 정보를 받아 Response할 경우, 해당 DTO 틀에 맞게 정보를 담아 Controller, Service 계층간에 이동을 하며 전달하는 정보의 틀! 이라고 나는 이해했음!

 

기존의 알고 있던 VO는 불변객체로써 readOnly 속성을 가진다!

public class DtoTest{

	private Long id;
    private String name;
    private String email;
    
    //getter
    public Long getId(){
    	return id;
    }
    
    public String getName(){
    	return name;
    }
    
    public String getEmail(){
    	return email;
    }
    
    //setter
    public void setId(Long id){
    	this.id = id;
    }
    
    public void setName(String name){
    	this.name = name;
    }
    
    public void setEmail(String email){
    	this.email = email;
    }
}

이렇게 해당 정보를 담을 필드값과 getter/setter를 포함한 클래스라 생각하면 된다!

 

참고로, DTO는 일반적으로 로직을 getter, setter, toString(), equals 이외에 다른 로직을 갖고 있지 않다! 그점에 유의하자!

 

본 포스팅은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 공부한 내용을 정리한 포스팅입니다.

지적 및 피드백은 환영합니다!

반응형

'Language & Framework > Spring' 카테고리의 다른 글

@Async, 비동기 기능  (0) 2021.02.16
ResponseEntity란?  (4) 2021.02.08
JUnit과 계층별 단위 테스트 정리  (0) 2021.01.31
트랜잭션에 대해 알아보자.  (0) 2020.11.28
의존관계 주입(Dependency Injection)  (0) 2020.11.19