Beranda

Database

Prisma Get Started: Instalasi, Skema, Mi...

Prisma Get Started: Instalasi, Skema, Migrasi, dan Query Das...

Prisma Get Started: Instalasi, Skema, Migrasi, dan Query Dasar

Mulai dari nol dengan Prisma: inisialisasi proyek, definisi skema, migrasi skema ke database, dan menjalankan kueri dasar menggunakan Prisma Client. Panduan ini memilih jalur cepat (SQLite) serta opsi PostgreSQL untuk produksi.

Prisma Get Started-Instalasi-Skema-Migrasi-dan Kueri Dasar

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.

Catatan: Jalur tercepat memakai SQLite (tanpa setup server DB). Untuk produksi, gunakan PostgreSQL/MySQL dsb.—prinsipnya sama.

Daftar Isi

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.

Copy

mkdir prisma-hello
cd prisma-hello
npm init -y
npm install prisma @prisma/client
npx prisma init --datasource-provider sqlite

Perintah 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.

File: prisma/schema.prisma
Copy
generator 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.

Copy

npx prisma migrate dev --name init_schema

Perintah 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:

File: src/app.ts
Copy
import { 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:

Copy

npm install -D typescript ts-node
npx ts-node src/app.ts

Mengecek Data via Prisma Studio

Selama pengembangan, Anda bisa mengecek isi tabel melalui antarmuka visual berikut.

Copy

npx prisma studio
Keamanan: Prisma Studio ditujukan untuk lingkungan lokal/pengembangan. Jangan mempublikasikannya ke internet publik.

Opsi Produksi (PostgreSQL)

Untuk produksi, ubah datasource menjadi postgresql dan sesuaikan .env. Berikut contoh singkat:

File: prisma/schema.prisma (cuplikan)
Copy
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
File: .env (contoh)
Copy
DATABASE_URL="postgresql://USER:PASS@HOST:5432/DBNAME?schema=public"

Copy

npx prisma migrate dev --name init_pg

Langkah 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/client terpasang 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

.refs li{margin-left:18px}

/* Code blocks */
.codebox{margin:10px 0}
.codehead{display:flex;justify-content:space-between;align-items:center;background:var(--soft);border:1px solid #e2e8f0;border-bottom:none;border-radius:10px 10px 0 0;padding:8px 10px;font-size:14px;color:var(--ink-2)}
pre{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:10px;padding:12px;overflow:auto;margin:0}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;white-space:pre}
.copy{float:right;margin-left:auto;margin-bottom:6px;padding:6px 10px;border-radius:8px;border:1px solid var(--muted);background:#f8fafc;cursor:pointer}
.copy:disabled{opacity:.6;cursor:not-allowed}


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Post Terkait

Panduan Lengkap Prisma untuk Basis Data Modern

Prisma adalah lapisan abstraksi basis data yang memberikan tipe statis, pengalaman pengembangan yang nyaman, dan alur mi...

05 Nov 2025

Pilar Keandalan: Panduan Administrasi, Keamanan, dan Strategi Backup Data PostgreSQL Skala Produksi

Pelajari praktik terbaik untuk menjaga keamanan, memastikan ketersediaan tinggi (High Availability), dan merencanakan st...

03 Nov 2025

Meningkatkan Efisiensi Basis Data: Teknik Indexing, Join Kompleks, dan Fungsi Query Tingkat Tinggi di PostgreSQL

Temukan cara menghubungkan data dari berbagai tabel dengan Join yang tepat, mengoptimalkan kecepatan pengambilan data de...

03 Nov 2025

© 2026 Yowisben. Semua hak dilindungi.

Powered by LONTAR CMS v1.26.1