용어 설명
- Model: 어플리케이션 계층의 정보, 데이터 의미
- View: 화면 출력 로직을 담당
- Controller: Model과 View의 연결하는 제어 로직을 담당 (api 주소, 어떤 파라미터를 받을건지 return으로 결과 객체)
- DAO(=Repository): DB를 사용하여 데이터의 조회 및 조작하는 기능을 전담
- DTO: 로직을 가지고 있지 않은 순수한 데이터의 객체
- Service: Controller의 요청에 맞추어 데이터를 가공하고 Controller에게 넘겨주는 비즈니스 로직
- Servlet: Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술
✔️ DAO와 Repository
DAO와 Repository는 데이터에 접근한다는 점에서 공통점을 갖지만, DAO는 데이터 저장소(DB table) 중심이고, Repository는 객체 중심이라는 차이점이 있다. 또한 DAO는 Repository를 사용해 구현할 수 없지만 Repository는 DAO를 사용해 구현할 수 있기에 Repository가 DAO보다 higher layer라고 할 수 있다.
특징
MVC 패턴은 각각 수행하는 역할이 구분되고 분리되어 있어 기능이 복잡하더라도 가독성과 재사용성이 뛰어나다. 하지만 View와 Model 사이의 의존성이 높다는 것이 큰 단점이다. 어플리케이션이 커질수록 복잡해지고 유지보수가 어려워질 수 있다.
흐름
- 사용자의 요청에 따라 적절한 Controller를 찾아 호출
- Controller는 해당 Service객체를 찾아 호출
- Service객체는 DAO 객체를 이용하여 원하는 Data를 요청
- DAO객체는 MyBatis를 이용하는 Mapper를 통해 작업을 수행
- Service를 통해 처리된 데이터를 Controller에 전달
- Controller는 다시 스프링 MVC 쪽으로 데이터를 전달
참조: Spring MVC model2 패턴 정리 (tistory.com)
[Spring] Spring MVC 패턴 · linked2ev
DAO와 Repository의 차이점 | Dev.Isaac (isaac56.github.io)