2020.07.27~28(월,화) Sprint 12. MVC Design Patterns

Park, Jinyong·2020년 7월 27일
2

Today I Learned

MVC 패턴을 학습했다.

MVC는 Model, View Controller 구조를 구현하는 소프트웨어 디자인 패턴이다.

Model

database와 연결되며 테이블을 초기화한다.

View

controller로부터 넘어온 데이터를 가공하여 사용자가 볼 수 있도록 화면에 출력한다.

Controller

사용자가 접근한 URL에 따라 요청 사항을 파악하고 model로부터 온 데이터를 가공하여 view로 전달한다.

MVC 패턴의 한계

view와 controller의 경계선이 모호해질 가능성이 있다. view의 역할을 controller에서 담당하게 될 여지가 크다.

Node.js인 ORM(Object-relational mapping)인 sequelize를 학습했다.

ORM

객체 관계 매핑. 데이터베이스와 객체를 연결해주는 프로그래밍 기법

Object <-- ORM --> Database

ORM을 사용하면 SQL 종류마다 사소하게 다른 문법에 개의치 않아도 된다. 알아서 적용해준다.

Migration

스키마의 변경 사항을 관리하기 위한 버전 제어 시스템

보통 자동 생성되며 sequelize-cli로 generate하거나 혹은 skeleton 파일을 생성할 수 있다. 그리고 실행하여 database에 변경 사항을 적용할 수 있다.

Sequelize를 학습했다. Sequelize API Reference

Sequelize-cli를 사용해보았다. sequelize-cli API Reference

bootstrapping
npx sequelize-cli init
Model 생성
npx sequelize-cli model:generate --name <ModelName> --attributes <FieldName>:<Type>
Model 적용
npx sequelize-cli db::migrate

데이터베이스에 테이블이 생성되고 변경 사항이 적용된다.

Skeleton 생성
npx sequelize-cli migration:generate --name <SkeletonName>

모델에 변경 사항이 있을 때 skeleton 파일을 생성한 뒤 직접 변경해야 한다.

Short.ly를 완성했다.

bit.ly처럼 단축 URL을 통해 웹 사이트에 접근할 수 있도록 구현한다.


이번 스프린트는 MVC 모델에 관해서 살펴보고 javascript 객체와 database를 연결해주는 ORM중 하나인 sequelize를 학습했다. 정말... 공식 문서 넘너무너무 많다.... 그래도 내게 큰 도움을 주는 친구니까... 친해져야 한다. 거기다 레퍼런스 친구도 있다. 관계는 얇지만 수없이 많다. 어려운 친구지만 역시 친해져야 한다. 후...

다른 분들 블로그 보니까 다들 정리도 깔끔하게 하고 필력도 좋으시다. 나는 누가 본다는 생각을 하면 글이 안 써져서 그냥 일기처럼 작성하는거라 완전히 나 위주로 작성되어 있어 남이 보기에는 좋지 않은 글이다... ㅎㅎ 이렇기에 내 글을 봐주시는 분들께는 진심으로 감사하다고 말하고 싶다. 더 잘 작성하고 싶은 마음은 있어서 비공개로 해두고 틈날 때마다 정리도 해보려고 했지만... 그냥 꾸준히 작성하는 거에 더 의의를 두려고 한다. 코드를 작성하면서 README.md에 기록해 두는 것으로 만족하려고 한다!

0개의 댓글