Data Transfer Object (DTO)

2023. 4. 2. 13:17·📘 Backend/Spring

📘DTO (Data Transfer Object)

HTTP Method별로 or Request, Response 별로
받아올 필드값(Request)과 보내줄 필드값(Response)을 잘 생각해서 필드값 설정
Mapstruct로 자동매핑이 어려운 필드의 경우 서비스클래스에서 비즈니스로직으로 처리하자.

  • DTO 클래스 = 요청 데이터를 하나의 객체로 전달받는 역할
  • DTO를 적용하기 전엔 요청데이터를 @RequestParam을 통해 일일이 받았지만,
    데이터가 많아질수록 @RequestParam의 개수도 많아질 것이다.
  • DTO 클래스를 적용함으로써 코드의 간결성을 충족시킬 수 있다.
  • DTO를 쓰는 가중 중요한 이유는 HTTP 요청의 수를 줄여 비용절감을 하는 것
  • 아래에서 볼 예시는 DTO, 데이터 유효성 검증을 받지않은 코드를 DTO & 유효성 검증을 적용 해볼것임

핸들러 메소드인  postMember에 DTO클래스를 적용하기 전

img


DTO 클래스 생성 후 이메일에 Varidation 체크를 위한 @Email 적용

img


핸들러 메소드의 생성자 파라미터에 DTO클래스를 넣고 유효성 검증 어노테이션 추가

img

저작자표시 (새창열림)

'📘 Backend > Spring' 카테고리의 다른 글

Service Layer  (0) 2023.04.03
정규표현식 (Regex)  (0) 2023.04.02
Spring MVC & Rest API & Servlet  (0) 2023.04.02
AOP (Aspect Oriented Programming)  (0) 2023.04.02
Container Config & Component Scan  (0) 2023.04.02
'📘 Backend/Spring' 카테고리의 다른 글
  • Service Layer
  • 정규표현식 (Regex)
  • Spring MVC & Rest API & Servlet
  • AOP (Aspect Oriented Programming)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      Lock #Thread #Concurrency
      React #Markdown
      GStreamer #Pipeline
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Data Transfer Object (DTO)
    상단으로

    티스토리툴바