DTO

·2022년 7월 31일
0

우리는 API를 만들면서 각 테이블마다 DTO 폴더를 만들어 필요에 따라서 input 파일을 만들어 주고 사용했다. 그렇다면 이 DTO라는 건 뭐길래 따로 폴더를 만들어 줘서 input을 사용하게 되는 걸까? 이러한 궁금증 때문에 dto의 개념적인 부분을 정확하게 정의해 보고자 한다.


DTO란?

DTO는 Data Transfer Object의 약자로 계층간 데이터 교환 역할을 한다. DB에서 꺼낸 데이터를 저장하는 Entity를 가지고 만들게 된다. Entity를 Controller 같은 클라이언트와 직접 마주하는 계층에 직접 전달하는 대신 DTO를 사용해 데이터를 교환한다고 볼 수 있다.

DTO는 그저 계층간 데이터 교환이 이루어질 수 있도록 하는 객체이기 때문에 특별한 로직을 가지지 않는 순수한 데이터 객체여야 한다. 또한 DB에서 꺼낸 값을 DTO에서 임시로 조작할 필요가 없기 때문에 DTO에는 생성자에서 값을 할당한다.

Entity와 DTO는 필요에 따라 분리하게 되는데 우리는 직접 값을 입력해서 저장해야 될 때도 있다. 그럴 때 Entity를 사용하여 테이블과 매핑되는 Entity의 값이 변하면 Repository 클래스에 Entity가 호출될 때 DB에 값이 반영되고 여러 클래스들과 다른 로직들에게도 영향을 미친다. 그래서 데이터 변경이 많은 것은 따로 View와 통신하는 DTO 클래스로 분리해 줘야 한다.

참고 : DAO, DTO, Entity Class의 차이

profile
파워블로거입니다 주인이 힘이 센 건 아니고 그냥 하고 싶습니다

0개의 댓글