MVC
소프트웨어가 돌아가는 방식에 대한 하나의 패턴
이러한 MVC 패턴으로 만들어진 라이브러리라던지 프레임워크 들이 존재한다.
서비스가 잘 진행되기 위해 각 기능별로 나눈다.(모델 / 뷰 / 컨트롤러)
코드 가독성, 코드 관리, 코드의 질 향상
Ruby on Rails(ruby) / express(js) / Laravel(PHP) / Backbone(js) / Codeigniter(PHP) / Angular(js) / Django(python) / Flask(python)
Model
데이터의 정보를 가지고 있다.
DB와 연결되어 있어 데이터를 가지고 올 수 있다.
자기 자신이 가지고 있는 데이터나 DB에서 가져온 데이터들로 Controller와 상호작용한다.(데이터반환)
모델이 View 직접 대화하는 경우는 잘 없다.
View
유저가 보는 화면을 보여주게 하는 역할을 한다.
브라우저의 경우 html이나 css 역할이라고 보면 된다.
View는 Controller와 대화 하고 Model이나 DB와는 직접 대화 하지 않는다.
그저 데이터를 받으면 그 데이터를 바탕으로 그릴 뿐이다.
Controller
View에서 일어나는 액션과 이벤트에 대한 input 값을 받는다. 그럼 그 값들을 Model에 전달해주기 전에 일련의 가공과정을 거친 후 전달한다. 그럼 Model은 상황에 따라 자체 Data를 반환해 Controller에게 전달해 주든 다시 DB에서 다시 Data를 받아 다시 반환해 주게 된다. 그럼 Controller는 View가 이 data를 알아 들을 수 있게 가공과정을 거친 후 View에게 전달해 주게 된다.
ORM
관계형 데이터베이스 엔티티, 레코드 등을 접근 할 때 마치 js의 객체 혹은 Class를 취급하듯이 다룰 수 있게 해준다. DB 와 JS 간의 중개사 혹은 통역사 역할을 한다고 생각하면 된다. 객체와 모델 사이의 관계
SQL문이 전혀 없이도 DB에 접근 할 수 있다.
객체에서의 각 속성은 DB에서는 필드라고 생각하면 된다. N:N은 배열을 이용하여 표현한다.
Node.js 기반의 ORM인 Sequelize
promise를 지원한다. 지원하는 DB(Postgres / MySQL / MariaDB / SQLite / Microsoft SQL Server)
JS 코드만 작성하면 DB의 다양한 종류를 사용하는데 도와준다.
Association 은 SQL의 join
Transaction 은 하나하나의 쿼리의 조합을 작업 단위로 보고 중간에 문제가 생겼을 시 rollback 성공시 commit을 해주는 것
'개념정리' 카테고리의 다른 글
12/10[TIL]Authentication(2) (0) | 2020.12.10 |
---|---|
12/9[TIL]Authentication (0) | 2020.12.09 |
12/2[TIL]SQL (0) | 2020.12.02 |
11/24[TIL]Redux (0) | 2020.11.24 |
11/23[TIL]Module / Bundler / 비동기 / Virtual Dom / Hooks (0) | 2020.11.23 |