# TIL-20210412
# Today
- MVC
- ORM
- sequelize
# Content
# MVC 패턴
model, view, controller의 역할을 나누어 프로그램을 구성하는 디자인 패턴
model
서비스에서 데이터 로직를 담당하는 부분
데이터를 받아오거나 데이터를 후처리하는 부분으로 볼 수 있다.controller
실제로 클라이언트로 부터 요청을 받아 model에게 데이터 처리를 요청하는 부분
그 결과를, view에 전달하여 원하는 화면을 보여주도록 한다.view
클라이언트에게 보여지는 부분
데이터는 controller를 통헤 받아 view에 동적으로 적용 할 수 있다.
대략적인 모식도
# ORM (Object Relational Mapping)
ORM이란?
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.ORM의 장단점
장점
- 선언문, 할당, 종료 등과같은 부수적인 코드가 사라짐으로써 개발의 생산성 향상.
- 명확한 쿼리 (복잡한 쿼리문을 보는 것보다는 메서드를 통해서 어떤 데이터를 원하는지 알 수 있게 된다.)
- 코드그 간결하고 직관이기 때문에 가독성을 높여준다. (기존에 객체형식에 익숙하다면 쉽게 데이터 구조를 알 수 있다.)
- DB 의존성 감소 (객체로 다루기 때문에 연결만 바꾸면 된다.)
- 대부분 ORM 솔루션이 특정 Database에 종속적이지 않다. 개발자는 Database에 상관없이 Object에만 집중할 수 있다.
단점
- 튜닝의 어려움
- 미세한 수정 및 디버그하기가 상대적으로 어렵다.
- 복잡한 쿼리작성의 문제
- ORM이 지정해 놓은 명령만 내릴 수 있다
- Raw쿼리에 비해 느린 실행속도 (최소 3배 이상 차이)
- DB에 직접 명령을 내리지 않고 한단계 거쳐가기 때문에
# Sequelize
javascript ORM을 구성하기 위해 사용하는 하나의 라이브러리