์๋ ํ์ธ์ Foma ์ ๋๋ค!
ํ์์ SQL๋ฌธ์ ์์ฑํ๋๋ฐ ์ต์ํ์ง ์์ ๋ถํธํ ์ ์ด ๋ง์์๋๋ฐ์.
๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ก SQL๋ฌธ ์์ฑ ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์กฐ์์ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Sequelize์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
ORM์ด๋?
๋จผ์ Sequelize๋ฅผ ์๊ธฐ ์ํด์ ORM์ ๊ฐ๋ ์ ์์์ผ ํ๋๋ฐ์.
๊ทธ ์ด์ ๋ ๋ฐ๋ก Sequelize๊ฐ Node.js์ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด์ฃ .
ORM์ Object Relational Mapping์ ์ค์๋ง๋ก ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๋งคํํด์ฃผ๋ ๊ฒ ์ ๋๋ค.
์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๋งคํํด์ค๋ค๋ ๊ฒ ์ด๋ค ๊ฒ์ผ๊น์?
์๋ฅผ ๋ค๋ฉด ๊ฐ์ฒด ์งํฅ ์ธ์ด์์๋ ๋ชจ๋ธ์ ์ ์ํ ๋ Class๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ Table์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ก ์ฌ๊ธฐ์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ก ๋ Class๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ Table์ ์ฐ๊ฒฐ์์ผ ์ค๋ค๋ ๊ฒ์ด์ฃ .
์ด๊ฒ์ ์ง์ SQL๋ฌธ์ ์์ฑํ์ง ์๊ณ , ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด์ฃ .
(ORM์ ๋ ๊น์ด ์๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด ์ฃผ์ธ์!)
Sequelize๋?
Sequelize๋ Node.js์์ ORM์ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
(Spring์์ JPA/Hibernate, Django์์ Django ORM๊ณผ ๊ฐ์ต๋๋ค.)
๊ณต์ ํํ์ด์ง์์๋ ์๋์ ๊ฐ์ด ์๊ฐํ๊ณ ์์ด์.
Sequelize is a modern TypeScript and Node.js ORM for Postgres, MySQL, MariaDB, SQLite and SQL Server, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more. - Sequelize -
์๋์ ๊ฐ์ด ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง, ๋ชจ๋ธ์ ์ฐ๊ด์ฑ, ์ฌ์ด ์ญ์ ๋ฑ์ ์ฅ์ ์ด ์์ต๋๋ค.
๋ ์์ธํ ์๊ณ ์ถ์ ๋ถ๋ค์ ์๋ ๊ณต์ ํํ์ด์ง์์ ํ์ธํด ์ฃผ์ธ์!
Sequelize
Sequelize is a modern TypeScript and Node.js ORM for Postgres, MySQL, MariaDB, SQLite and SQL Server, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more.
sequelize.org
Example
Sequelize๋ฅผ ์ฌ์ฉํ์ ๋์ ์ฌ์ฉํ์ง ์์์ ๋์ ์์๋ฅผ ๊ฐ๋จํ๊ฒ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํ ์ด๋ธ ์์ฑ ์
SQL
db.connect(function (err) {
if (err) throw err;
const sql = "CREATE TABLE Users (namename VARCHAR(255), birthday VARCHAR(255))";
con.query(sql, function (err, result) {
if (err) throw err;
});
});
Sequelize
const User = sequelize.define("User", {
username: DataTypes.STRING(35),
password: {
type: DataTypes.STRING(20),
allowNull: false,
},
});
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์
SQL
const userid = req.body.userid;
const content = req.body.content;
db.query(
"INSERT INTO Chats (USERID,CONTENT) VALUES (?,?)",
[userid, content],
(err, result) => {
if (err) {
console.log(err);
} else {
res.send("Inserted values successfully!");
}
}
);
Sequelize
const addChat = async (req, res) => {
let info = {
userId: req.body.userId,
content: req.body.content,
};
const chat = await Chat.create(info).catch((err) => console.log(err));
res.status(200).send(chat);
};
์ ๋ ์์ ๋ง ๋ด๋ Query๋ฌธ์ ์ง์ ์์ฑํ์ง ์๊ณ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋๊ธ