Controller, Service and Repository in multi-tiered
-
Controller:
- 역할: 들어오는 웹 요청을 처리하고, 모델 데이터를 검색하고, 응답을 렌더링하기 위한 뷰를 반환한다.
- Spring에서의 주석:
@Controller
또는 @RestController
- 일반적인 작업: 요청 데이터 파싱, 사용자 입력 처리, 적절한 뷰 또는 응답 데이터 반환 (RESTful 웹 서비스의 JSON과 같은).
-
Service:
- 역할: 애플리케이션의 비즈니스 로직을 캡슐화한다. 이 계층은 보통 계산, 유효성 검사, 데이터 소스나 다른 서비스로의 호출 조정을 포함한다.
- Spring에서의 주석:
@Service
- 일반적인 작업: CRUD 작업, 복잡한 비즈니스 유효성 검사 및 필요한 데이터 변환
-
Repository:
- 역할: 데이터 소스 (예: 데이터베이스)와 직접 상호 작용합니다. 그것은 기본 데이터 액세스 메커니즘을 추상화하고 데이터를 검색하고 저장하기 위한 깔끔하고 간단한 인터페이스를 제공한다.
- Spring에서의 주석:
@Repository
- 일반적인 작업: 생성, 읽기, 업데이트, 삭제 (CRUD) 작업. Spring에서는 Spring Data JPA를 자주 사용하여 리포지토리 인터페이스의 구현을 자동으로 생성할 수 있다.
flow:
- 웹 요청은 Controller에 의해 받아진다.
- Controller는 일부 작업 (예: 데이터검색 또는 저장)을 Service에 위임할 수 있다.
- Service는 차례로 Repository와 상호 작용하여 데이터 소스 (예: 데이터베이스)에 액세스한다.
다른 계층으로 분리함으로써:
- 코드는 더 모듈식이고 유지 관리하기 쉽다.
- 각 계층은 독립적으로 테스트될 수 있다.
- 각 클래스나 모듈이 변경되는 한 가지 이유를 갖기 위해 단일 책임 원칙을 강화하는 것이 더 쉽다.