Tech/Spring

[Spring] 스프링 프레임워크 계층

@~@ 2024. 3. 3. 20:10

1. 프레임워크 계층 1 - Presentation Layer = Web Layer

웹브라우저를 통해 클라이언트의 요청 및 응답을 처리한다. 사용자 인터페이스라고 생각하면 된다.

그냥 controller 클래스를 의미한다! @Controller 애너테이션을 사용한다. 뷰 영역을 담당하는 템플릿도 여기에 속한다. Exception handlers도 여기다!~

 

2. 프레임워크 계층 2 - Buisness Layer = Service Layer

컨트롤러와 DAO의 중간 영역에서 사용한다. (DAO가 뭐지? 따로 자세히 공부해야겠다) 두 사이를 연결하여 두 계층이 직접적으로 통신하지 않도록 한다.

-> 클라이언트 - Controller - Service - DAO(Repository)  - DB 순서

 

@Service 애너테이션을 사용한다. DB 관련한 실질적인 처리 업무와 무관한 영역이다.

클라이언트의 요구사항을 매치시켜서 구현하는 계층이다. 클라이언트의 요청마다(GET, POST 등..) 다르게 매치시켜서 처리해야하는 부분을 관리한다.

-> 사용자가 웹사이트에서 무언가 삭제 요청을 보내면 서비스 인터페이스의 "삭제"를 매치시켜서 요구사항을 구현한다.

 

3. 프레임워크 계층 3 - Data Access Layer = Repository Layer

DAO 계층, 리포지토리 계층이다. 데이터 관련한 직접적인 처리업무를 진행한다. DAO 인터페이스 등을 사용하여 구축하고, 각 인터페이스를 구현한 구현 클래스를 생성한다. @Repository 애너테이션을 사용한다. 데이터베이스의 데이터를 실질적으로 CRUD하는 계층이다.

 

프레임워크 기반으로 크게 3개의 계층으로 나누면 컨트롤러, 서비스, 리포지토리이다.

여기에 부가적으로 Domain, DTO, DAO를 다룰 수 있다.

4. 프레임워크 계층 4 - Data Model

DB의 테이블과 매칭될 클래스이다. 흔히 Entity 클래스라고 한다! JPA로 데이터베이스를 처리할 때 사용한다.

DTO 형태로 각 계층 간 실질적으로 전달되는 데이터를 의미한다. 각 계층과 계층 사이 전달되어지는 데이터라고 생각하면 된다.

 

5. 프레임워크 계층 5 - DTO

 데이터 전송 객체이다. 계층 간 데이터를 교환하기 위해서 만든 객체이다. 데이터 객체를 Service, Controller 등으로 보낼 때 또는 DB에서 데이터를 받아 전송할 때 사용한다. 클라이언트 - Controller - Service - Repository - DB 모든 단에서 DB의 원본 데이터가 움직이지 않는다! 중간은 원본 데이터 대신 DTO가 사용된다.

 따로 로직은 갖지 않는다. 롬복과 같은 라이브러리를 많이 사용한다.

 

6. 프레임워크 계층 6 - DAO

데이터 접근 객체. 쉽게 말해서 DB에 접근하는 객체이다. 데이터베이스를 이용하여 애플리케이션 데이터를 처리하는 기능을 구현할 때 아래와 같이 구현한다.

MyBatis 사용 시: DAO 구현

JPA 사용 시: JPA Repository 이용

한 마디로, Service 계층과 DB를 연결해주는 역할을 하는 중요한 객체이다.