티스토리 뷰

1. 이번 목표:
    Sequelize

 

2. 배운 내용 요약

💡 Sequelize란?
Node.js 환경에서 사용되는ORM(Object-Relational Mapping) 라이브러리.
SQL 쿼리를 직접 작성하지 않아도 객체 형태로 데이터베이스를 다룰 수 있다.
MySQL뿐만 아니라 PostgreSQL, SQLite, MSSQL 등 다양한 데이터베이스를 지원한다.
// 기존 MySQL 연동 vs Sequelize 연동 비교

// 1. 기존 MySQL 연동
const mysql = require('mysql2');
const express = require('express');
const app = express();
app.set('view engine', 'ejs');

// MySQL 설정 및 연결
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'test_db'
});

db.connect((err) => {
  if (err) {
    console.error('Database connection failed:', err);
  } else {
    console.log('Connected to MySQL');
  }
});

// GET /users (기존 방식)
app.get('/users', (req, res) => {
  const sql = 'SELECT * FROM users';
  db.query(sql, (err, results) => {
    if (err) throw err;
    res.render('users', { users: results });
  });
});

// 2. Sequelize 연동
const { Sequelize, DataTypes } = require('sequelize');

// Sequelize 설정
const sequelize = new Sequelize('test_db', 'root', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

// User 모델 정의
const User = sequelize.define('User', {
  name: { type: DataTypes.STRING, allowNull: false },
  email: { type: DataTypes.STRING, allowNull: false }
});

// 데이터베이스 동기화
sequelize.sync().then(() => {
  console.log('Database synchronized');
}).catch((err) => {
  console.error('Database connection failed:', err);
});

// GET /users (Sequelize 방식)
app.get('/users', async (req, res) => {
  try {
    const users = await User.findAll();
    res.render('users', { users });
  } catch (err) {
    console.error(err);
    res.status(500).send('Internal Server Error');
  }
});

app.listen(3000, () => console.log('Server running on port 3000'));

 

 

 

3. 회고

더보기

항상 mysql 워크벤치를 이용해 DB에 접근했었는데 이게 웬 걸! Sequelize를 통해 정말 간단하게 여러 데이터베이스에 대해 일관되게 작동할 수도 있고, SQL쿼리를 자바스크립트 코드로 작성해서 더 쉽고 간결하게 작업을 수행할 수 있게 되었다!

테이블과 모델을 매핑하여 객체 지향적인 데이터를 다룰 수 있게 된 것이 엄청난 장점인 것 같다.

새싹을 다니며 새로운 지식도 알게 되고. 백엔드 관련 이해도도 높아지는 것이 느껴져서 참으로 기분이 좋고 뿌듯하다. 학원 다니는 내내 수업이 재밌기는 또 처음이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함