mengenal-orm-prisma-mengoptimalkan-interaksi-dengan-database-dalam-aplikasi-nodejs-post

4 September 2024 / ARTICLE

Mengenal ORM Prisma: Mengoptimalkan Interaksi dengan Database dalam Aplikasi Node.js

Apa itu ORM?

Sebelum saya bahas mengenai Prisma, mungkin saya akan coba jelaskan sedikit tentang ORM (Object Relational Mapping). Jadi ORM sendiri secara sederhana adalah jembatan antara (relational) database dengan server-side script yang akan kita gunakan. Dalam case ini saya menggunakan JavaScript dan berjalan di server Node.js. ORM ini memudahkan segala urusan yang berhubungan dengan database, mulai dari koneksi sampai aksi seperti create, read, update, dan delete ke database.

Apakah bisa tanpa menggunakan ORM? Tentu saja bisa. Di Node.js sendiri sudah ada package yang bisa membuat koneksi antara Node.js dengan database secara langsung, seperti: node-postgres untuk PostgreSQL dan node-mysql2 untuk MySQL. Mungkin sampai sini saja sudah mulai terlihat “ribet”nya karena jika kita switch database, kita perlu switch package yang dipakai juga. Dengan ORM, salah satu kemudahannya adalah ketika kita switch database itu tinggal ganti provider-nya entah itu postgresql atau mysql.

Apa itu Prisma?

Prisma adalah ORM modern yang menyediakan cara yang deklaratif dan aman untuk mengakses database dari TypeScript dan Node.js. Prisma menggunakan Prisma Client untuk mengakses database, yang merupakan klien database yang dihasilkan otomatis.

Sebagai langkah pertama, buatlah sebuah direktori proyek dan masuklah ke dalamnya:

mkdir hello-prisma
cd hello-prisma

Selanjutnya, instal Prisma CLI sebagai dependensi pengembangan dalam proyek:

npm install prisma --save-dev

Selanjutnya, atur proyek Prisma ORM Anda dengan membuat file Prisma Schema menggunakan perintah berikut:

npx prisma init 

Perintah ini melakukan dua hal:

- Membuat direktori baru yang bernama prisma yang berisi file bernama schema.prisma, yang berisi skema Prisma dengan variabel koneksi basis data Anda dan model-model skema.

- Membuat .env file Dalam direktori utama proyek, yang digunakan untuk mendefinisikan environment variables (seperti database connection).

untuk terhubung ke database, kamu perlu mengatur url di datasource dari Prisma schema di database connection URL:

prisma/schema.prisma

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

Jangan lupa untuk mengganti database url di file .env

.env

DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public" 

Skema Prisma menyediakan cara yang intuitif untuk memodelkan data. Tambahkan model-model berikut ke dalam file schema.prisma Anda:

prisma/schema.prisma

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

Pada titik ini, Anda sudah memiliki skema Prisma namun belum memiliki basis data. Jalankan perintah berikut di terminal Anda untuk membuat database serta tabel User dan Post yang diwakili oleh model-model Anda:

npx prisma migrate dev --name init 

Sampai tahap ini kita sudah melakukan semua setup untuk menggunakan prisma, tapi sebelum mengolah datanya menggunakan prisma di project kita, kita harus menginstall prisma client terlebih dahulu dengan menggunakan perintah berikut di terminal:

npm install @prisma/client
touch index.js 

Selanjutnya, tempelkan template berikut ke dalamnya:

.index.js

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  
}

main()
  .then(async () => {
    await prisma.$disconnect()
  })
  .catch(async (e) => {
    console.error(e)
    await prisma.$disconnect()
    process.exit(1)
  })

simple contoh untuk melakukan query dengan menggunakan Prisma ORM dapat kalian liat di dokumentasi Prisma salah satunya seperti berikut:

const user = await prisma.user.create({
  data: {
    email: 'elsa@prisma.io',
    name: 'Elsa Prisma',
  },
}) 

Kesimpulan

Dengan kelebihan Prisma sebagai next-generation ORM yang menawarkan DX yang berbeda, serta kekurangan dalam hal manajemen schema yang sedang dalam proses update. Prisma tetap menjadi pilihan menarik bagi backend developer yang ingin menyederhanakan interaksi dengan database dan meningkatkan efisiensi . Dengan Prisma, kita dapat mengoptimalkan waktu dalam mengelola migration, menghasilkan kode yang lebih bersih, dan DX yang nyaman.

sumber kutipan: https://posann.medium.com/orm-object-relational-mapping-sequelize-atau-prisma-e932b3f6b859, https://hendraaagil.dev/blog/pengalaman-menggunakan-prisma-orm, https://www.prisma.io, https://www.petanikode.com/express-rest-api-ts