웹 어플리케이션의 계층 구조는 위와 같다. 이 중에 도메인 객체가 좀 생소하기도 하고 DTO와 Domain의 차이가 무엇인지 궁금해져서 자세하게 알아보기로 했다.
1. Domain과 DTO
1) Domain
- DB 테이블과 매칭되는 클래스, DB 테이블의 칼럼을 필드로 가지고 있음
- 데이터가 변경되는 것을 막기 위해 setter가 존재하지 않음
- "@Entity" annotation을 사용해서 Domain임을 나타냄
2) DTO(Data Transfer Object)
- 계층간 데이터 교환을 위해 사용하는 객체
- Domain의 데이터를 복사하여 전달함
- 데이터를 가공, 변경할 일이 없기 때문에 setter가 없음
- setter가 아닌 생성자로 데이터를 받음
- toEntity() 메서드를 생성하여 DTO를 Entity로 변환함
Controller에서 Service로 넘겨줄 때 DTO를 Domain으로 변환한다. Service에서는 Domain 객체를 사용해서 서비스를 수행한다.
인프런 김영한 강사님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 참고하여 작성한 글입니다.
개발 환경
- MacBook Pro(13-inch, M1)
- macOS Monterey 12.4
- InteliJ Ultimate 2022.2.2
- Oracle Open JDK 11.0.15
- Spring Boot 2.7.6
'🍃Spring ,SpringBoot 공부 > 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 카테고리의 다른 글
[스프링 공부/스프링 입문] 회원 도메인과 리포지토리 만들기 (0) | 2022.12.22 |
---|---|
[스프링 공부/스프링 입문] 템플릿 엔진 (JSP와 Thymeleaf) (0) | 2022.12.14 |
[Spring 공부/스프링 입문] 스프링 프로젝트 생성 (0) | 2022.10.27 |
댓글