728x90
DTO(Data Transfer Object)란?
프로세스 간에 데이터를 전달하는 객체
데이터를 전송하기 위해 사용하는 객체라서 그 안에 비즈니스 로직 같은 복잡한 코드는 없고 순수하게 전달하고 싶은 데이터만 담겨있음
주로 클라이언트와 서버가 데이터를 주고받을 때 사용
그럼 왜 사용하느냐!
사용 이유
- View Layer와 DB Layer의 역할을 분리하기 위해서
-> 객체를 표현하기 위한 계층과 저장하는 계층의 역할을 분리하기 위해서 DTO를 사용한다. - Entity 객체의 변경을 피하기 위하여
-> Entity 객체를 그대로 사용하면 프로그래머의 의도와 다르게 데이터가 변질될 수 있다. - View와 통신하는 DTO 클래스는 자주 변경된다
-> View(클라이언트)와 통신하는 DTO 클래스, 예를 들어 ResponseDTO, RequestDTO는 요구사항에 따라 자주 변경된다. 어떤 요청에서는 특정 값이 추가될 수도 있고, 특정값이 없을 수도 있다. 따라서 Entity 클래스와 분리하여 관리해야 한다. - 도메인 모델링을 지키기 위하여
도메인 설계를 잘하였다고 하더라도 원하는 데이터를 표시하기가 쉽지 않을 수 있다. 예를 들어 Entity 클래스의 특정 컬럼들을 조합하여 특정 포맷을 출력하고 싶다고 하자. Entity 클래스에 표현을 위한 필드나 로직이 추가되면 객체 설계를 망가뜨릴 수 있다. 따라서 DTO에 표현을 위한 로직을 추가해서 사용하는 것이 Entity의 도메인 모델링을 지킬 수 있다. - 오버헤드 발생 가능성 차단
Entity 그대로 사용한다면 불필요한 데이터를 사용할 수 있다.
출처 : https://velog.io/@witwint/Spring-DTO%EC%9D%98-%EC%82%AC%EC%9A%A9%EC%9D%B4%EC%9C%A0
'CS' 카테고리의 다른 글
[CS 스터디] 네트워크(Network) (1) | 2024.05.28 |
---|---|
[CS] HTTP API vs REST API (0) | 2024.05.01 |
[CS] Spring Dispatcher-Servlet (0) | 2024.05.01 |
[CS] Spring MVC (0) | 2024.05.01 |
[CS] Spring Framework (1) | 2024.05.01 |