본문 바로가기
🍃Spring ,SpringBoot 공부/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[스프링 공부/스프링 입문] 웹 어플리케이션 계층 구조 (DTO와 Domain의 차이)

by 코코의 주인 2022. 12. 14.

웹 어플리케이션의 계층 구조는 위와 같다. 이 중에 도메인 객체가 좀 생소하기도 하고 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

댓글