참고
- 모델-뷰-컨트롤러 - 위키백과, 우리 모두의 백과사전
- [10분 테코톡] 🧀 제리의 MVC 패턴
- <MVC패턴>Controller & Servicec & Repository란 무엇일까?(TIL.220525)
- MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
- MVC Design Pattern
- MVC(Model, View, Controller) Pattern
- [Spring] Controller, Service, Repository
Model, View, Controller?
소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴.
사용자 인터페이스와 비즈니스 로직을 분리할 수 있다.
관심사의 분리로 서로 영향을 주지 않는 유지보수가 쉬운 애플리케이션을 만들 수 있다.
구성 요소
- Model
- 데이터와 비즈니스 로직을 관리
- 애플리케이션의 데이터
- 앱이 포함해야 할 데이터가 무엇인지 정의함.
- 데이터가 변경되면 이를
View
에게 알리는게 일반적이나 업데이트된 뷰를 조절하기 위해Controller
에 알리기도 함. -
규칙
- 사용자가 편집하길 원하는 모든 데이터 가지고 있을 것.
- View
- 레이아웃과 화면(UI)을 처리
- 항목이 사용자에게 보여지는 방식을 정의
- 표시할 데이터(사용자마다 다른 부분)만
Model
에서 정보를 얻어옴. -
규칙
Model
이 가지고 있는 정보 따로 저장하지 않을 것.- 변경이 일어나면 변경 통지에 대한 처리 방법을 구현할 것.
- Controller
Model
과View
로 명령 전달Model
과View
의 다리 역할- ex) 리스트 추가/제거 ->
Controller
에 입력 전달 ->Model
변화 요청 -> 업데이트 된Model
을View
로 전달
- ex) 리스트 추가/제거 ->
- 앱의 사용자로부터의 입력에 대한 응답으로
Model
및/또는View
를 업데이트하는 로직을 포함함. -
규칙
Model
이나View
의 변경을 모니터링할 것.
한계
- 프로그램의 규모가 커지거나 복잡한 화면을 구성할 때 다수의
View
와Model
이Controller
에 연결되기 때문에Controller
의 크기가 불필요하게 커지는 현상이 발생한다. - 이를 Massive-View-Controller라고 부르면 이를 보완하기 위해 다음과 같은 패턴들이 파생됐다.
- MVP 패턴
- MVVM 패턴
- Flux
- Redux
- RxMVVM
Model 세분화
Service
Spring
4계층 구조의Application
계층을 담당하며 비즈니스 로직을 정의- 애플리케이션의 비즈니스 로직을 포함하며 사용자의 요청을 이행하기 위해 도메인 객체들이 협력하여 요청을 수행하도록 조정할 책임이 있다.
Controller
가 요청한 작업을 수행하기 위해 호출할 수 있는 메소드 집합을 제공한다.- 사용자로부터 전달받은 데이터를 가공하여 처리해줌
JPARepository
를 상속하는 객체를 가져와 어떤 처리를 할지 비즈니스 로직을 처리한다.
DAO 와 DTO
- Data Access Object
- DB에 접근하기 위한 객체
- Data Transfer Object
- 계층간 데이터 교환을 위한 객체
- 사용자로 부터데이터를 받아 JPA로 DB에 저장한다.
- JPA로 DB에서 받아온 데이터를 담아 사용자에게 전달한다.
- 순수
Getter & Setter
또는Builder
로 구성된 클래스
- 계층간 데이터 교환을 위한 객체
Repository
Entity
에 의해 생성된 DB에 접근하는 메서드들을 사용하기 위한 인터페이스Spring
4계층 구조에서Infrastructure
계층을 담당하며, 주로 DB와 같은 외부와의 통신을 담당한다.- 얻어온 정보를
Application
이나Domain
계층에 전달하는 역할 수행
MVC 패턴을 지키기 위한 5가지 원칙
Model
은Controller
와View
에 의존하지 않는다.
->Model
내에Controller
와View
코드가 존재하지 않는다.View
는Model
에만 의존하고Controller
에 의존하지 않는다.View
는 사용자마다 다른 부분에서만Model
에서 데이터를 받아온다.Controller
는Model
과View
모두 의존할 수 있다.View
가Model
로부터 데이터를 받을 때는 반드시Controller
에게 받아야 한다.
'Java > Spring' 카테고리의 다른 글
스프링 시큐리티 인 액션] 5장_인증 (0) | 2024.06.28 |
---|---|
스프링 시큐리티 인 액션] 4장_암호처리 (0) | 2024.06.21 |
스프링 시큐리티 인 액션] 3장_사용자 관리 (0) | 2024.06.19 |