[Spring Boot] Model 클래스 (Entity)와 DTO 클래스

2023. 4. 19. 16:44·Java/Spring Boot
728x90
728x90

Model 클래스 (Entity)

  - DB에서 받아온 데이터를 담는 클래스 

  - 값을 담아둘 수 있고, 필요하다면 기능(메서드)를 추가해둘 수 있음

  - 코딩 컨벤션

    : SELECT 문을 통해 받아온 Model 객체의 변수명을 'Model명 + Entity'로 짓기

 

DTO

  - 데이터 전송 객체

  - Form 태그에서 보내야 하는 정보들만 멤버 변수로 갖는 DTO를 각각 선언함

      ex) SignInFormDto의 멤버 변수 : id, password

      ex) SignUpFormDto의 멤버 변수 : id, password, name, age

  - DTO 간에 멤버 변수가 겹치는 경우

      · 상속은 권장하지 않음 (코드 변경이 이뤄지면서 꼬일 수 있음)

      · 포함 관계로 사용하는 경우는 많음 (초보 단계에서는 우선 사용하지 말고 진행)

  - JOIN 등을 사용해서 테이블 컬럼 외의 컬럼을 가져오려면 response DTO를 만들어서 사용하기

 

 


Model 패키지와 DTO 패키지 분리의 필요성

① 코드 가독성 및 유지 보수성

    - DTO와 Model 클래스를 별도의 패키지로 구분함

        → 코드의 구조가 명확해짐

    - 관련 클래스를 찾기 쉬움

        → 유지 보수성 향상

 

② 객체의 역할 구분

    - Model 클래스는 DB의 테이블 구조를 표현함

    - DTO는 클라이언트와 서버 간의 데이터 전송을 담당함

 

③ 유연한 변경

  - 애플리케이션의 요구사항이 변경되면 DTO와 Model 클래스의 변경이 독립적으로 이뤄질 수 있음

      → 구조를 분리해두면 한 쪽의 변경이 다른 쪽에 영향을 미치는 것을 최소화할 수 있음

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Spring Boot' 카테고리의 다른 글

[Spring Boot] DAO - Service - Controller 구조 예시  (0) 2023.04.20
[Spring Boot] 트랜잭션 어노테이션  (0) 2023.04.19
[Spring Code] 사용자 정의 예외 클래스와 에러 페이지  (0) 2023.04.19
[Spring Boot] MyBatis 설정 및 DAO 구현  (1) 2023.04.18
[Spring Boot] TRM (Table Relational Mapping) 기반 모델링  (0) 2023.04.14
'Java/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] DAO - Service - Controller 구조 예시
  • [Spring Boot] 트랜잭션 어노테이션
  • [Spring Code] 사용자 정의 예외 클래스와 에러 페이지
  • [Spring Boot] MyBatis 설정 및 DAO 구현
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (10)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (14)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    개발일지
    HTML
    cs
    면접
    http
    php
    java
    js
    티스토리챌린지
    tailwindcss
    Android
    jsp
    Codeigniter
    jQuery
    SpringBoot
    SQL
    vuejs
    Swing
    SEO
    errorNote
    Hotkeys
    git
    CSS
    zapier
    C#
    오블완
    Wordpress
    typeScript
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Spring Boot] Model 클래스 (Entity)와 DTO 클래스
상단으로

티스토리툴바