📖 Konsep Utama ORM
- Model: representasi tabel/koleksi dalam bentuk class/objek.
- CRUD: operasi Create, Read, Update, Delete dilakukan dengan method, bukan query manual.
- Relasi: ORM mendukung relasi antar tabel (One-to-Many, Many-to-Many).
- Abstraksi: developer fokus pada logika, bukan detail query.
🔹 Sequelize (MySQL/PostgreSQL)
// models/User.js
const { Sequelize, DataTypes } = require("sequelize");
const sequelize = new Sequelize("belajar_db", "root", "", {
host: "localhost",
dialect: "mysql"
});
const User = sequelize.define("User", {
nama: { type: DataTypes.STRING, allowNull: false }
});
module.exports = User;
// app.js
const express = require("express");
const User = require("./models/User");
const app = express();
app.use(express.json());
app.get("/users", async (req, res) => {
const users = await User.findAll();
res.json(users);
});
app.post("/users", async (req, res) => {
const user = await User.create({ nama: req.body.nama });
res.status(201).json(user);
});
app.listen(3000, () => console.log("Server berjalan di http://localhost:3000"));
🔹 Mongoose (MongoDB)
// models/User.js
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
nama: { type: String, required: true }
});
module.exports = mongoose.model("User", userSchema);
// app.js
const express = require("express");
const mongoose = require("mongoose");
const User = require("./models/User");
const app = express();
app.use(express.json());
mongoose.connect("mongodb://localhost:27017/belajar_db");
app.get("/users", async (req, res) => {
const users = await User.find();
res.json(users);
});
app.post("/users", async (req, res) => {
const user = new User({ nama: req.body.nama });
await user.save();
res.status(201).json(user);
});
app.listen(3000, () => console.log("Server berjalan di http://localhost:3000"));