티스토리 뷰
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쿼리를 자바스크립트 코드로 작성해서 더 쉽고 간결하게 작업을 수행할 수 있게 되었다!
테이블과 모델을 매핑하여 객체 지향적인 데이터를 다룰 수 있게 된 것이 엄청난 장점인 것 같다.
새싹을 다니며 새로운 지식도 알게 되고. 백엔드 관련 이해도도 높아지는 것이 느껴져서 참으로 기분이 좋고 뿌듯하다. 학원 다니는 내내 수업이 재밌기는 또 처음이다.
'SeSAC' 카테고리의 다른 글
| [새싹x코딩온] 웹 개발자 부트캠프 과정 7주차 회고(2) | jwt, 비밀번호 암호화/복호화 (0) | 2024.12.13 |
|---|---|
| [새싹x코딩온] 웹 개발자 부트캠프 과정 7주차 회고(1) | Sequelize_relation 테이블 간 관계 (1) | 2024.12.09 |
| [새싹x코딩온] 웹 개발자 부트캠프 과정 6주차 회고(1) | MVC 패턴과 MYSQL 연결 (0) | 2024.12.04 |
| [새싹x코딩온] 웹 개발자 부트캠프 과정 5주차 회고(2) | SQL, MVC 패턴의 이해 (1) | 2024.11.27 |
| [새싹x코딩온] 웹 개발자 부트캠프 과정 5주차 회고(1) | multer 모듈을 이용한 파일 업로드 (0) | 2024.11.25 |
