Sprint 12 - MVC Design Pattern

dlrbwls0302·2021년 3월 2일
0

Achievement Goal

  • MVC 디자인 패턴과 같이, 코드를 각각 다른 부분으로 나누어 작성해야 하는 이유를 이해할 수 있다.

  • Model, View, Controller가 각각 어떤 역할을 하는지 이해할 수 있다.

  • ORM의 장점을 이해할 수 있다.

  • Sequelize ORM과 관련 CLI 툴들을 공식 문서를 보고 사용할 수 있다.

    • Sequelize를 이용해 모델을 작성할 수 있다.
    • Sequelize를 이용해 마이그레이션을 할 수 있다.
  • 마이그레이션의 개념과 필요성을 이해할 수 있다.

  • Sequelize ORM으로 1:1. 1:N, N:N 관계를 표현할 수 있다.

  • (Advanced) MVC 디자인 패턴의 한계를 이해할 수 있다.


MVC Design Pattern

MVC를 알기 전에 디자인 패턴에 대해 알 필요가 있다. 디자인 패턴은 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 해결책을 의미한다. 어떤 앱을 개발한다고 할때도 서로 간에 공통되는 설계 문제가 있고, 이를 처리하는 해결책 사이에도 공통점이 있다. 이러한 유사점을 패턴이라고 한다.

MVC(Model-View-Controller)는 디자인 패턴 중의 하나로 각각의 요소는 서로 다른 역할을 분담한다. 모델(Model)은 데이터를 담당하고, 뷰(View)는 화면을 담당, 컨트롤러(Controller)는 모델과 뷰 사이의 중재자 역할을 한다.

1) Model

모델은 데이터와 관련된 일을 한다. 모델 자신이 데이터를 갖고 있거나 데이터베이스와 연결이 되어 있다. 클라이언트가 보낸 요청을 컨트롤러가 받고 그걸 다시 모델에 보내면, 그걸 토대로 데이터를 변경, 업데이트하는 역할을 한다.

2) View

뷰는 화면에 보여주기 위한 역할을 한다. 컨트롤러의 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것들을 보여준다. 보통 모델에서 데이터가 변경, 업데이트 되면 그걸 뷰가 받아서 화면에 바뀐 데이터를 보여주게 된다.

3) Controller

화면에서 사용자의 요청을 받아서 처리되는 부분을 구현하게 되며, 요청 내용을 분석해서 모델과 뷰에 업데이트 요청을 하게 된다. 모델과 뷰는 서로 직접적으로 연결되어 있지 않고 그 대신 각각 컨트롤러와 연결이 되어 있어 컨트롤러를 통해 모델과 뷰는 서로 소통을 하게된다.


ORM

ORM(Object-Relational-Mapping)은 자바스크립트와 데이터베이스 사이에 중간 다리 역할을 한다. 객체지향 프로그래밍에서 관계형 데이터베이스에 접근할 때 객체를 통해서 할 수 있다. 객체안에 각 프로퍼티가 관계형 데이터베이스의 필드 역할을 한다고 볼 수 있다.

ORM이 중간 다리 역할을 하기 때문에 객체지향 프로그래밍을 할 때 굳이 sql문을 신경쓰지 않고도 데이터베이스에 접근할 수 있기 때문에 프로그래밍에 더 집중할 수 있게 해준다.

1) Association

2) Transaction

자료 출처:

profile
오늘의 공부가 쌓여서 내일의 나를 만들어낸다.

0개의 댓글