Belajar Prisma ORM: Database Access Modern untuk Developer Node.js
Prisma mengubah cara developer Node.js berinteraksi dengan database — type-safe, intuitive, dan dengan DX yang jauh melampaui ORM tradisional.
Kenapa Prisma Berbeda dari ORM Lain?
ORM tradisional seperti Sequelize atau TypeORM mendefinisikan model sebagai class JavaScript/TypeScript. Prisma mengambil pendekatan berbeda: model didefinisikan dalam Prisma Schema yang deklaratif, dan Prisma Client yang type-safe digenerate secara otomatis dari schema itu.
Setup Awal
npm install prisma @prisma/client
npx prisma init
Perintah di atas membuat folder prisma/ dengan file schema.prisma dan file .env dengan variabel DATABASE_URL.
Mendefinisikan Schema
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql" // atau postgresql, sqlite
url = env("DATABASE_URL")
}
model User {
id String @id @default(uuid())
email String @unique
name String
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id String @id @default(uuid())
title String
content String @db.LongText
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
createdAt DateTime @default(now())
}
Membuat dan Menjalankan Migrasi
npx prisma migrate dev --name init
# Membuat file migration SQL dan menjalankannya ke database
Generate Prisma Client
npx prisma generate
Operasi CRUD yang Type-Safe
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
// Create
const user = await prisma.user.create({
data: { email: "khalim@example.com", name: "Khalim" },
});
// Read dengan relasi
const userWithPosts = await prisma.user.findUnique({
where: { email: "khalim@example.com" },
include: { posts: { where: { published: true } } },
});
// Update
await prisma.post.update({
where: { id: "abc123" },
data: { published: true },
});
// Delete
await prisma.user.delete({ where: { id: user.id } });
Prisma Studio — GUI untuk Database
npx prisma studio
Buka browser ke localhost:5555 — GUI untuk browsing dan edit data di database kamu secara visual. Sangat membantu saat development.
Tips Penting
- Selalu gunakan satu instance PrismaClient (singleton pattern) di seluruh aplikasi.
- Jalankan
prisma generatesetiap kali schema berubah agar Prisma Client selalu up-to-date. - Untuk production, gunakan
prisma migrate deploybukanmigrate dev.