Prisma adalah ORM modern untuk ekosistem JavaScript/TypeScript. Anda mendeskripsikan model data pada schema.prisma, melakukan migrasi skema ke database, lalu memakai Prisma Client (type-safe) untuk membaca/menulis data dari kode aplikasi. Pada bagian akhir, Anda juga akan mencoba Prisma Studio untuk menjelajah data secara visual selama pengembangan.
Prasyarat
- Node.js & npm terpasang.
- Koneksi internet untuk mengunduh dependensi.
- Terminal/PowerShell (boleh WSL/macOS/Linux/Windows).
Inisialisasi Proyek & Prisma
Langkah berikut membuat proyek Node minimal, memasang Prisma dan Prisma Client, lalu melakukan inisialisasi.
mkdir prisma-hello
cd prisma-hello
npm init -y
npm install prisma @prisma/client
npx prisma init --datasource-provider sqlitePerintah di atas menghasilkan folder prisma/ dan berkas .env dengan koneksi SQLite default (file:./dev.db), serta kerangka schema.prisma.
Menyusun Skema (schema.prisma)
Kita buat model sederhana: User dan Post (relasi satu->banyak). Simpan isi berikut ke prisma/schema.prisma.
prisma/schema.prismagenerator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL") // default: file:./dev.db
}
model User {
id String @id @default(cuid())
email String @unique
name String
posts Post[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id String @id @default(cuid())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([authorId], map: "idx_post_author")
}Migrasi Skema ke Database
Jalankan migrasi untuk menyinkronkan skema ke database dan mengenerate Prisma Client.
npx prisma migrate dev --name init_schemaPerintah ini membuat folder prisma/migrations/ berisi SQL yang diterapkan ke database lokal. Setelah sukses, Prisma Client siap dipakai.
Query Dasar dengan Prisma Client
Buat berkas src/app.ts, lalu isi dengan contoh CRUD sederhana berikut:
src/app.tsimport { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
async function main() {
// Buat user
const alice = await prisma.user.create({
data: { email: "alice@example.com", name: "Alice" },
});
// Buat beberapa post milik Alice
await prisma.post.createMany({
data: [
{ title: "Halo Prisma", content: "Memulai dengan Prisma.", authorId: alice.id, published: true },
{ title: "Konsep Skema", content: "Model, relasi, migrasi.", authorId: alice.id }
]
});
// Baca post terbit terbaru
const recent = await prisma.post.findMany({
where: { published: true },
orderBy: { createdAt: "desc" },
take: 10,
include: { author: { select: { email: true, name: true } } }
});
console.log("Post terbit:", recent);
// Update satu post
const first = recent[0];
if (first) {
const updated = await prisma.post.update({
where: { id: first.id },
data: { title: first.title + " (diperbarui)" }
});
console.log("Diupdate:", updated.id);
}
// Hapus post yang belum diterbitkan
const removed = await prisma.post.deleteMany({ where: { published: false } });
console.log("Dihapus:", removed.count, "post draft");
}
main()
.catch((e) => { console.error(e); process.exit(1); })
.finally(async () => { await prisma.$disconnect(); });Jalankan contoh di atas:
npm install -D typescript ts-node
npx ts-node src/app.tsMengecek Data via Prisma Studio
Selama pengembangan, Anda bisa mengecek isi tabel melalui antarmuka visual berikut.
npx prisma studioOpsi Produksi (PostgreSQL)
Untuk produksi, ubah datasource menjadi postgresql dan sesuaikan .env. Berikut contoh singkat:
prisma/schema.prisma (cuplikan)datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}.env (contoh)DATABASE_URL="postgresql://USER:PASS@HOST:5432/DBNAME?schema=public"npx prisma migrate dev --name init_pgLangkah query dan Studio sama seperti pada SQLite. Di tahap produksi, pertimbangkan connection pooling (mis. pgbouncer), indeks yang tepat, serta strategi backup/restore.
Troubleshooting Ringkas
- Gagal konek DB — Periksa
DATABASE_URL, hak akses jaringan, dan status layanan DB. - Migrasi gagal — Tinjau folder
prisma/migrations/, pastikan skema konsisten; jalankan ulang setelah koreksi. - Type error saat kueri — Pastikan
@prisma/clientterpasang dan client telah digenerate (terjadi otomatis saat install). - Studio tidak muncul — Pastikan port tidak bentrok; coba parametrik
--port(mis.npx prisma studio --port 5555).
Kesimpulan
Itu saja! Anda telah: inisialisasi proyek, menulis skema, menjalankan migrasi, menulis kueri CRUD, dan membuka Studio. Selanjutnya, Anda bisa menambah relasi lebih kompleks, menulis seeding, serta mengintegrasikan dengan framework favorit (Express/Next/Nest). Prisma menjaga konsistensi tipe dari skema hingga kode—kombinasi yang menyenangkan untuk tim modern.
Sumber/Referensi
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

