SQL의 정의와 ORM으로 발전한 과정을 공부한 내용을 정리한 글이다
Structured Query Language 이다
즉, 관계형 데이터베이스 관리 시스템의 data를 관리하기 위해
설계된 특수 목적의 programming language 이다
data 의 CRUD 와 data model 의 schema 생성과 수정
database object 에 access 하기 위해 고안되었다
일반적인 SQL database 를 사용하게 되면
하나의 object 에 대한 data 를 불러오기 위해
수많은 join query 를 작성하게 된다
이 때 app이 확장하여 schema 가 복잡해질수록
작성해야하는 sql query 가 더욱 많아진다
Object Relational Model 이다
SQL 의 한계를 극복하기 위해 고안된 framework이다
이런 query를 API로 만들어 활용할 수 있게 도와주는 framework이다
대표적인 ORM 으로는 sequelize 가 있다
DB(postgres)와 sequelize를 연결한다
var sequelize = new Sequelize(
'postgres://sequelize:1234@localhost/sequelize'
)
var sequelize = new Sequelize('sequelize', 'sequelize', '1234', {
host: 'localhost',
dialect: 'postgres',
})
Model define 하여 table의 schema 를 표현한다
이후 실제 DB에 이 schema를 반영하기 위해서는 import 해야한다
sequelize.define(
'Publisher',
{
pub_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
name: { type: DataTypes.STRING(32), allowNull: false },
established_date: { type: DataTypes.DATE, defaultValue: DataTypes.NOW },
},
{
classMethods: {},
tableName: 'publisher',
freezeTableName: true,
underscored: true,
timestamps: false,
}
)
import 하여 model define 한 것을 실제 DB에 반영한다, object 생성하여 저장.(memory 공간에 올려 caching)
var fs = require('fs')
var path = require('path')
var Sequelize = require('sequelize')
var sequelize = new Sequelize(
'postgres://sequelize:1234@localhost/sequelize'
)
var db = {}
db['Publisher'] = sequelize.import(path.join(\_\_dirname, 'publisher.js'))db.sequelize = sequelize
db.Sequelize = Sequelize
module.exports = db