DTO를 왜쓸까??

Today Jeeho Learned·2022년 8월 30일
0

Spring

목록 보기
28/31
post-thumbnail

그냥 처음 Spring을 controller > service > repository 사이에 dto를 넣으면서 진행하는 것을 학습했다.
이유로는 DB컬럼값을 직접 건들이지 않기 위해서라고만 알고 있었는데, 이런 이유보다 명확한 이유를 알고싶어서 찾아보게 되었다! DTO를 정리해보자!

DTO란?

DTO(Data Transfer Object, 데이터 전송 객체)는 프로세스 간에 데이터를 전달하는 객체이다.

DTO 사용 이유

1. Entity 내부 구현 캡슐화 가능

  • Entity는 도메인의 핵심 로직과 속성을 가지며, 실제 DB 테이블과 매칭되는 클래스이다.
  • 따라서 Entity가 Getter, Setter를 가진다면 controller와 같이 비즈니스 로직과 큰 상관없는 곳에서 자원의 속성이 실수로 변경될 가능성이 있음.
  • DTO를 사용하여 Entity를 UI계층에 노출시키지 않아 보안상으로도 바람직함

2. 화면에 필요한 데이터 선별 가능

  • 다양한 API 스펙에 따라 필요한 데이터만 포함된 DTO를 만들어 request/response함으로써 전송 속도 개선 가능

3. 순환참조 방지

  • 양방향 매핑된 Entity를 controller에서 response로 return하면 Entity가 참조하는 객체가 지연 로딩되면서 순환참조에 빠질 수 있음
  • 이때, DTO를 return하여 순환참조를 방지할 수 있다.

4. validation 코드와 모델링 코드 분리 가능

  • @NotNull, @NotEmpty, @NotBlank 같은 validation 코드를 DTO에 정의함으로써 Entity에서는 모델링과 비즈니스 로직에 집중할 수 있다.

다음엔 DAO라는 녀석과의 차이를 알아봐야지!

profile
기록해야 (살아)남는다 !

0개의 댓글