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.
Belajar Prisma ORM: Database Access Modern untuk Developer Node.js

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 generate setiap kali schema berubah agar Prisma Client selalu up-to-date.
  • Untuk production, gunakan prisma migrate deploy bukan migrate dev.

Butuh Solusi Digital Custom?

Kami siap membuatkan solusi digital sesuai kebutuhan bisnis Anda.

Konsultasi Gratis