3 Layer Architecture
- 서버 개발 관점에서 각 계층별로 역할을 분리하는 개념입니다.
Presentaion layer
- 사용자가 입력한 데이터의 형식이나 간단한 유효성 검사를 수행합니다.
- 사용자가 입력한 요청이 유효한지 확인합니다
- 사용자에게 요청받고, 데이터를 전달합니다.
- @Controller, @RestController로 구현됩니다.
Business Logic layer
- 어플리케이션의 핵심으로 presentation layer의 요청을 받아 필요한 데이터를 가공하거나 결과를 반환합니다.
- presentation layer와 data access layer 사이에서 중간역할을 합니다.
- @Service로 구현됩니다.
Data Access Layer
- 데이터 베이스와 상호작용을 하여 데이터를 저장, 수정, 검색, 삭제하는 역할입니다.
- @Repository로 구현됩니다.
- Entity는 데이터 베이스 테이블과 매핑되어 데이터베이스에서 검색, 저장할때 데이터를 캡슐화 합니다.
Spring MVC
Model
- 데이터 베이스 테이블을 구성하는 Entity 객체입니다.
@Entity -> 이 어노테이션이 붙은게 맞습니다.
View
- 사용자가 볼 수 있는 화면을 구성합니다.
- 백엔드의 경우 클라이언트에 넘겨줄 Json을 구성하는 것으로 볼 수 있습니다.
Controller
- 클라이언트에서 들어온 요청을 적절하게 처리하기 위해 Service layer를 호출합니다.
- Service layer에서 반환받은 값을 적절하게 변환하여 클라이언트에 전달합니다.
가장 헷갈렸던 것은..
view가 service layer와 같다고 생각하였습니다.
더 자세하게 파고들어가보니 MVC는 웹 어플리케이션의 요청과 처리, 응답 생성을 담당하는걸 알게되었습니다.
3 layer architecture는 어플리케이션의 기능을 계층별로 나누어 하나의 모듈로 만듬으로써, 유지보수성과 확장성을 높히는데 목적이 있습니다.