# 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의 장단점

  • 장점

    1. 선언문, 할당, 종료 등과같은 부수적인 코드가 사라짐으로써 개발의 생산성 향상.
    2. 명확한 쿼리 (복잡한 쿼리문을 보는 것보다는 메서드를 통해서 어떤 데이터를 원하는지 알 수 있게 된다.)
    3. 코드그 간결하고 직관이기 때문에 가독성을 높여준다. (기존에 객체형식에 익숙하다면 쉽게 데이터 구조를 알 수 있다.)
    4. DB 의존성 감소 (객체로 다루기 때문에 연결만 바꾸면 된다.)
    5. 대부분 ORM 솔루션이 특정 Database에 종속적이지 않다. 개발자는 Database에 상관없이 Object에만 집중할 수 있다.
  • 단점

    1. 튜닝의 어려움
    2. 미세한 수정 및 디버그하기가 상대적으로 어렵다.
    3. 복잡한 쿼리작성의 문제
    4. ORM이 지정해 놓은 명령만 내릴 수 있다
    5. Raw쿼리에 비해 느린 실행속도 (최소 3배 이상 차이)
    6. DB에 직접 명령을 내리지 않고 한단계 거쳐가기 때문에

# Sequelize

javascript ORM을 구성하기 위해 사용하는 하나의 라이브러리