MVC
Model View Controller 의 약자로, 각각 서로 다른 파일에서 역할을 나누어 데이터를 주고받을 수 있도록 하는 디자인 패턴
M (Model)
- Model 은 View 가 렌더링 하는데 필요한 데이터를 말한다
- DBMS(DataBase Manage Service) 에 의해 관리되고, SQL 을 통해 구현한다
- Service(BO) 와 Repository(DAO) 로 나뉘어 Database 에서 데이터를 관리한다
V (View)
- View 는 웹 애플리케이션에서 실제로 보여지는 부분으로 Model 을 이용해 렌더링 하게 된다
- Java는 JSP 를 통해 구현한다
- Model 이 가지고 있는 정보를 저장해서는 안된다
C (Controller)
- View 에 받은 요청을 가공해서 Model 에 전달하거나, Model 로부터 받은 결과를 View 로 전달한다
Spring Framework 는 Servlet 사용해 한 파일에서 데이터를 가져와 response 로 전송하는 것과 다르게 각각 서로 다른 파일에서 MVC 를 나눠 각자의 역할을 하도록 만들었다. 이를 통해 Presentation Layer(표현 계층), Business Layer(비즈니스 계층), Persistence Layer(영속 계층) 이 분리된다.
이렇게 MVC 를 나누는 이유는 소스 분리를 통해 목적을 명확히 하고, 종속적이지 않게 하며, 재사용이 가능하도록 해 유지보수를 용이하게 만들기 위함이다.
Spring MVC 패턴
1. Presentation Layer (표현 계층)
- View 화면을 나타내기 위한 계층
- View, Controller
2. Business Layer (비즈니스 계층)
- 데이터 가공 및 처리 로직이 있는 계층
- Service, BO (Business Object)
3. Persistence Layer (영속 계층)
- 데이터를 DB 에 저장해 지속적으로 사용할 수 있는 계층
- Repository, DAO (Data Access Object), Mapper
Entity
- Database 와 테이블 데이터를 담기 위한 객체
- field 및 Getter, Setter 만을 갖는 Java Bean 객체
- 테이블 컬럼과 일치하는 filed 로만 구성
DTO (Data Transfer Object)
- 여러 계층 간의 데이터를 옮기기 위한 목적의 객체
- Entity 개념을 포함하며, Presentation Layer 에서 사용하기 위한 필드 추가 가능