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 클래스의 변경이 독립적으로 이뤄질 수 있음
→ 구조를 분리해두면 한 쪽의 변경이 다른 쪽에 영향을 미치는 것을 최소화할 수 있음
'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 |