본문 바로가기
Programming/Spring JPA

[스프링부트와 AWS로 혼자 구현하는 웹서비스] Web Layer, Service Layer, Repository Layer

by 깐니 2020. 7. 23.

요약

*API를 만들기 위한 3개의 클래스

* Spring 웹 계층

 

스프링 웹 계층에 대해 알아보기에 앞서, API 서버에 필요한 클래스는 크게 3개가 있다.

* Request 데이터를 받는 Dto

* API 요청을 받을 Controller

* 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service

 

 

스프링 웹 계층에서 위의 3가지 클래스들이 어떤 구조를 이루며 구현되는 것이 좋을지 알아보자.

Spring 웹 계층

https://jojoldu.tistory.com/

 

Web Layer

외부 요청 (@Filter, 인터셉터, @ControllerAdvice) 에 대한 전반적인 영역

컨트롤러 (@Controller), 뷰/템플릿 영역

 

Service Layer

@Service에 사용되는 서비스 영역

@Transactional이 사용되어야 하는 영역
트랜잭션과 도메인 간의 순서만 보장 -> 트랜잭션 단위가 무엇인지, 도메인이 어떤 순서로 실행되어야하는지

 

Repository Layer

데이터베이스와 같은 데이터 저장소에 접근하는 영역

 

Dtos

(Data Tranfer Object)

계층 간의 데이터 교환을 위한 객체

Entity클래스를 Req/Res 클래스로 사용하면 안됨 -> Entity클래스를 기준으로 테이블이 생성되고, 스키마가 변경되기 때문 -> Dto클래스 사용

수많은 서비스 클래스나 비즈니스 로직들이 Entity 클래스를 기준으로 동작하는데, 변경되면 여러 클래스에 영향을 미침 -> View Layer와 DB Layer 분리 필수

따라서, Entity클래스와 Controller에서 사용하는 Dto는 분리해서 사용 필수

 

Domain Model

비지니스 로직 처리 담당 (업무에 필요한 데이터처리를 수행)

도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 있고 공유할 수 있도록 단순화시킨 것

@Entity가 사용된 영역도 포함됨

무조건, 데이터베이스의 테이블과 관계가 있어야 하는 것이 아님 -> VO와 같은 값 객체도 이 영역에 해당됨

 

 

 

Reference

📘스프링부트와 AWS로 혼자 구현하는 웹서비스