spring- Spring 웹 계층과 Spring MVC

Jeong·2022년 10월 7일
0
post-custom-banner

Spring 웹 계층이란?

spring 웹 계층

Web Layer(or Presentation Layer)

  • 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역
  • 이외에도 필터(@Fitter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice)등 외부 요청과 응답에 대한 전반적인 영역을 이야기함
  • 즉, 브라우저상의 웹 클라이언트의 요청 및 응답을 처리

Service Layer(or Business Layer)

  • @Service에 사용되는 서비스 영역
  • 일반적으로 Controller(Web Layer)와 Dao(Repository Layer)의 중간 영역에서 사용되어 두 계층이 직접적으로 통신하지 않게 함
  • @Transactional이 사용되어야 하는 영역이기도 함

Repository Layer(or Data Access Layer)

  • Database와 같이 데이터 저장소에 접근하는 영역
  • Dao(Data Access Object)영역
  • 즉, 데이터를 CRUD하는 계층으로 ORM을 주로 사용

DTOs

  • DTO(Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체를 이야기하며 Dtos는 이들의 영역
  • 예를 들어 뷰 템플릿 엔진에서 사용될 객체나 Repository Layer에서 결과로 넘겨준 객체 등

Domain Model

  • 도메인이라고 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화시킨 것을 도메인 모델이라고 함
  • 이를테면 택시 앱이라고 하면 배차, 탑승, 요금 등이 모두 도메인이 될 수 있음
  • @Entity를 사용해봤다면 @Entity가 사용된 영역 역시 도메인 모델
  • 다만, 무조건 데이터베이스의 테이블과 관계가 있어야만 하는 것은 아님
  • 비지니스 로직 처리 담당

spring MVC


출처 : https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html

DAO(Data Access Object)

  • 실제 DB에 접근해 데이터를 조회하거나 조작하는 기능을 담당하는 객체
  • Service 계층과 DB를 연결하는 고리 역할을 함

DTO(Data Transfer Object)

  • 각 계층간 데이터를 이동(Transfer)하기 위한 객체
  • DTO는 로직을 갖고 있지 않는 순수한 데이터 객체임
  • 일반적으로 getter/setter 메서드만을 가짐

Controller

  • Client의 요청을 DTO의 형태로 받아 Service의 기능을 호출, 적절한 응답을 DTO 형태로 반환하는 역할
  • 즉, 요청과 응답을 관리하는 계층

Service

  • DTO를 통해 받은 데이터를 이용해 비지니스 로직 처리
  • DAO(or Repository)를 통해 DB에 접근하여 데이터를 관리하는 역할

Entity class

  • Domain이라고 부름(JPA 사용할 때 사용)
  • 실제 DB테이블과 매칭될 클래스
  • Entity 클래스 또는 가장 core한 클래스라고 부름
  • Domain 로직만을 가지고있어야 하며 Presentation Logic을 가지고 있어서는 안됨

참고
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
https://devlog-wjdrbs96.tistory.com/209

profile
화이팅!!
post-custom-banner

0개의 댓글