MVC 퍠턴은 프로그램을 구성할 때 Model, View, Controller로 구성요소를 나누어서 개발한 패턴이다.
- Model
-- 모델. 데이터의 가공을 책임지는 비즈니스 처리를 하는 로직 부분이다.- View
-- 뷰. 사용자에게 보여지는 인터페이스 부분이다.- Controller
-- 컨트롤러. 사용자의 입력 처리와 흐름 제어를 담당한다.
Object-Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 매핑(연결) 해주는 것이다.
객체지향은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다. 이 때, 서로의 데이터에 대한 '불일치'가 존재하게 되는데, 이 때 ORM을 사용하여 객체의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결한다.
따라서 객체를 통해 간접적으로 데이터베이스 데이터를 다루게 된다.
ORM을 사용하면 관계형 사고를 하지 않고도 관계형 데이터베이스를 사용할 수 있고, 별도의 어뎁터 없이도 데이터베이스를 사용할 수 있게 된다.
sequelize란 Node.js 환경에서 ORM을 사용하기 위해 만들어진 라이브러리 중 하나이다.
MySQL, SQLite 등을 지원하는 Promise 패턴 기반의 Node.js ORM이다.
(1) ORM 설정
npx sequelize-cli init
init을 이용해 ORM을 설정하면 config, models, migrations, seeders 파일이 생성된다.
(2) 모델 생성
npx sequelize-cli model:generate --name url --attributes url:string,title:string,visits:integer
model:generate --name을 이용해서 urls 테이블을 생성했고, --attributes를 이용해서 url, title, visits 필드를 만들어주었다. MySQL에서는 문자열을 varchar로 표현했는데 ORM 에서는 string으로 표현했다.
(3) 마이그레이션
운영중인 서비스에 DB 상태를 변경하게 되면 문제가 생길 수 있다. 이 때 sequelize에서 지원하는 마이그레이션을 사용하면 우리가 수정하고 싶은 문제를 소스코드로 작성해 수정할 수 있다.
npx sequelize-cli db:migrate
아직 실행되지 않은 마이그레이션 파일을 찾아서 마이그레이션 시킨다.
테이블의 스키마가 변경될 때마다 마이그레이션 해야한다.
이번시간에는 ORM에 대해 공부했다.
다음시간에는 MongoDB에 대해 공부한다!
오늘은 여기까지~!~~~