[용어정리] MVC

2023. 9. 14. 10:01
728x90

Ⓜ  MVC (Model - View - Controller)

: 소프트웨어 디자인 패턴.

이 패턴을 성공적으로 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다 !

* 비즈니스 로직 : 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분을 일컫는다. 사용자에게 보여지지 않는 부분에서 데이터를 처리하는 코드라고 보면 된다. 

- Model 모델

: 애플리케이션의 정보(데이터)

모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보함. > 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있음. 

- View 뷰

: 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소

사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다. 

- Controller 컨트롤러

: 데이터와 비즈니스 로직 사이의 상호동작을 관리

모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (ex. 워드 프로세서에서 문서를 편집하는 것)

또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (ex. 문서를 스크롤 하는 것)

 

🥨 WEB에 적용 시
1. 사용자가 웹사이트에 접속 (Users) 
2. Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Manipulates) 
3. Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 return
4. Controller는 Model이 리턴한 결과를 View에 반영 (updates)
5. 데이터가 반영된 view는 사용자에게 보여짐

<Model1 vs Model 2>

Model1 : (JSP에서 출력과 로직을 전부 처리) Controller 영역에 View 영역을 같이 구현하는 방식. 사용자의 요청을 JSP가 전부 처리함. >> 요청을 받은 JSP는 JavaBean Service Class를 사용하여 웹 브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력함. 

Model2 : (JSP에서 출력만 처리) 웹 브라우저 사용자의 요청을 서블릿이 받고, 서블릿은 해당 요청으로 View로 보여줄 것인지, Model로 보낼 것인지를 판단하여 전송. 

 

MVC 구조

>> URL 호출 -> Controller -> Service -> ServiceImpl -> DAO -> DAOImpl -> Service -> View

 

** Spring Framework의 MVC에서 Model = Service, DAO, DTO(=VO)로 나눌 수 있음.

 

- Controller 컨트롤러

: 클라이언트에서 요청이 들어올 때, 해당 요청을 수행할 비즈니스 로직을 제어하는 객체. 스프링에서는 컨트롤러에서 세부적으로 서비스 레이어를 만들어 해당 요청사항을 객체 지향적인 방식으로 세분화하여 관리한다. 

- Service 서비스

: 서비스 레이어단에서 세분화된 비즈니스 로직을 처리하는 객체. 

컨트롤러가 Request를 받으면 적절한 서비스에 전달하고, 전달 받은 서비스는 비즈니스 로직을 처리한다. 

DAO로 데이터 베이스를 접근하고 / DTO로 데이터를 전달받은 다음 적절한 처리를 해 반환한다. 

 

- DAO (Data Access Object) 

: DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 객체. 

DAO의 사용 이유는 효율적인 커넥션 관리와 보안성 때문. HTTP Request를 Web Application이 받게 되면, Thread를 생성하게 되는데, 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 드라이버를 로드하고 커넥션 객체를 생성하게 되면, 많은 커넥션이 일어나므로 DAO를 만들어 DB전용 객체로만 쓰는 것이다. (참고 : Database Connection Pool, Thread, Singleton Pattern)

 

- 메서드 헤더만 정의한 interface를 정의하고 이것을 구현한 클래스에 annotation을 붙여 사용한다. > 인터페이스로 구성하면 확장성과 유연성이 높아짐.  

 

- DTO (Data Transfer Object) / VO (Value Object)

: 각 계층간 데이터 교환을 위한 자바 객체를 의미한다. 이 객체는 데이터를 각 레이어 간에 전달하는 목적을 가지고 있으며, 객체의 속성과 getter, setter만 가지고 있음. 

- 계층간 데이터 교환을 위한 자바 빈즈(Java Beans)이다. 

- Database에서 Data를 얻어 Service나 Controller등으로 보낼 때 사용하는 객체

 

 

 

 

 

아래 블로그를 참고하여 작성하였습니다. 

https://m.blog.naver.com/jysaa5/221751719334

 

[용어] MVC, Spring Framework MVC, Controller, Service, DAO, DTO, VO - 개념

MVC (Model-View-Controller) - 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. - 이 패...

blog.naver.com

https://cocoon1787.tistory.com/733

 

[개발상식] MVC 패턴이란? (Model-View-Controller)

🚀 이번 포스팅은 개발자 면접에서 자주 나오는 질문 중의 하나인 "MVC패턴"에 대한 내용입니다. MVC패턴의 의미와 사용해야 하는 이유, 사용 예시 등등에 대해 알아보겠습니다. 💡 MVC 패턴이란?

cocoon1787.tistory.com

 

728x90