기존에 사용하던 MVC 패턴에는 문제점이 있는데,
Controller는 역할이 너무 많다는 문제점이다.
- 요청에 대한 처리
- 예외처리
- View Template 응답 or Data 응답
- 비지니스 로직 처리
- DB 상호작용
코드 재사용성을 위해 여러 Layer로 나누어 역할을 분담해주는 구조가 Layered Architecture 이다.

- Presentation Layer
- 클라이언트의 요청을 받는 역할을 수행한다.
- 요청에 대한 처리를 Service Layer에 전달한다.
- Service에서 처리 완료된 결과를 클라이언트에 응답한다.
- 사용하는 Annotation : @Controller, @RestController
- Business Layer(Service Layer)
- 사용자의 요청 사항을 처리한다.
- DB와 상호작용이 필요한 경우, Repository Layer에게 요청한다.
- 사용하는 Annotation: @Service
- Data Access Layer(Repository Layer)
- DB와 상호작용을 수행한다.
- Connection 연결, 해제
- CRUD 작업 처리
- 사용하는 Annotation: @Repository
- DTO (Data Transfer Object)
- 계층간 데이터 전달을 위해 사용된다.
- 요청 데이터를 처리하는 객체는 일반적으로 RequestDto로 명명한다.
- 응답 데이터를 처리하는 객체는 일반적으로 ResponseDto로 명명한다.
'Spring > 이론' 카테고리의 다른 글
| [트러블슈팅] JPA 연관관계 매핑 vs Repository 패턴 - 어떤 게 더 안전할까? (0) | 2025.06.04 |
|---|---|
| Spring 데이터 변환 컴포넌트들 (0) | 2025.06.04 |
| Spring @PathVariable vs @RequestBody (0) | 2025.05.09 |
| Spring @RestController & ResponseEntity<T>에 대해 (0) | 2025.05.08 |
| Spring DTO에 대해 (0) | 2025.05.08 |