Skip to main content

5. Object Relations Mapping (ORM) Prisma.html

ORM (Object Relational Mapping) - Pikesteward - Blog

Gambar 1. Object Relational Mapping

Object Relational Mapping (ORM) adalah suatu teknik yang memudahkan kalian untuk mengakses dan mengelola data dari database dengan menggunakan pendekatan berbasis object. Ketika kita membicarakan tentang ORM, kita sebenarnya merujuk pada sebuah library atau framework yang mengimplementasikan teknik ini, yang sering disebut sebagai "ORM".

 

Sebuah pustaka ORM adalah sebuah library yang ditulis dalam bahasa pemrograman pilihan kalian, yang menyediakan kumpulan kode yang diperlukan untuk memanipulasi data. Dengan menggunakan pustaka ORM, kalian tidak perlu lagi menggunakan bahasa SQL secara langsung. Sebaliknya, kalian dapat berinteraksi langsung dengan object dalam bahasa pemrograman yang sama yang kalian gunakan.

 

Kelebihan Menggunakan ORM:

  1. Menghemat waktu

Menggunakan ORM memungkinkan kalian untuk menulis model data hanya di satu tempat, sehingga lebih mudah untuk memperbarui, memelihara, dan menggunakan kembali kode.

  1. Kode yang lebih bersih

Penggunaan ORM memaksa kalian untuk mengikuti pola MVC (Model-View-Controller), yang pada akhirnya membuat kode kalian lebih terorganisir dan lebih mudah dibaca.

  1. Fleksibilitas yang lebih tinggi

Menggunakan perpustakaan ORM memungkinkan kalian untuk menyesuaikan kode dengan cara pengkodean yang natural. ORM juga mengabstraksi sistem basis data, sehingga kalian dapat dengan mudah mengganti basis data yang digunakan tanpa perlu mengubah banyak bagian dari kode kalian.

 

Kekurangan Menggunakan ORM:

  1. Pembelajaran yang diperlukan

Menggunakan ORM membutuhkan waktu dan usaha untuk mempelajarinya. Beberapa library ORM bisa sulit dipahami dan memerlukan pemahaman yang dalam tentang konsep ORM. Mereka menawarkan fitur kuat, tapi kompleks dalam penggunaannya.

Konsep ORM melibatkan pemetaan objek ke basis data, sehingga kita bisa berinteraksi dengan basis data menggunakan objek dan metode yang lebih akrab. Pemahaman yang kuat tentang konsep seperti pemetaan objek-entitas, asosiasi, penjadwalan, dan pengambilan data sangat penting.

Ketika menggunakan library ORM yang kompleks, penting untuk meluangkan waktu mempelajari dokumentasi dan contoh penggunaannya. Juga, pemahaman dasar SQL dan desain basis data akan membantu mengatasi tantangan yang mungkin muncul.

Meskipun library ORM mempercepat pengembangan dan mengurangi kesalahan, harus dipertimbangkan apakah memang perlu. Terkadang, menggunakan pendekatan SQL langsung atau library ORM yang lebih sederhana bisa lebih cocok.

  1. Performa yang mungkin terbatas

Meskipun ORM memiliki performa yang baik untuk query sederhana, mereka mungkin tidak seoptimal SQL murni untuk proyek yang besar dan kompleks. Seorang ahli SQL mungkin dapat mengoptimalkan query dengan lebih baik daripada yang dapat dilakukan oleh library ORM.

  1. Potensi terjadinya masalah

Menggunakan ORM untuk membuat database bisa menjadi boomerang bagi pengembang baru. Mereka mungkin tidak menyadari apa yang terjadi di balik layar dan dapat menulis pernyataan yang banyak atau memperlakukan ORM sebagai "silver bullet". Hal ini dapat mengakibatkan kinerja yang buruk atau masalah lain dalam kode yang dihasilkan.

 

Contoh penggunaan ORM yang memberikan kemudahan pada penggunanya:

A picture containing text, screenshot, font

Description automatically generated

Gambar 2. Contoh penggunaan query.

kita memiliki kelas buku, kita ingin mengambil semua buku yang penulisnya adalah "Rizky". Secara manual, kita akan melakukan penulisan seperti contoh di gambar 2. Namun dengan menggunakan ORM kita bisa menyederhanakan proses pemanggilan gambar 2, seperti contoh di gambar 3.

A picture containing text, screenshot, font, graphics

Description automatically generated

Gambar 3. Contoh penggunaan ORM.

 

Popular ORMs in JavaScript, and why you should care. | by Jordan ...

Gambar 4. Penjelasan Prisma.

Prisma adalah sebuah library yang berjalan disisi server yang membantu para pengembang dalam membaca dan menulis data ke dalam database dengan cara yang intuitif, efisien, dan aman. Prisma merupakan ORM yang bekerja dengan baik dengan kerangka kerja favorit kalian. Mudah untuk diintegrasikan ke dalam kerangka kerja pilihan, Prisma menyederhanakan akses ke basis data, menghemat penulisan kode boilerplate yang berulang, dan meningkatkan keamanan tipe data.

 

Dengan Prisma, kalian dapat dengan mudah melakukan operasi seperti membaca (Read), menulis (Create), memperbarui (Update), dan menghapus (Delete) data dalam database tanpa harus menulis banyak kode repetitif. Prisma memahami struktur data dan skema basis data kalian, sehingga kalian dapat menggunakan syntax yang intuitif untuk mengakses data.

 

Instalasi dan Konfigurasi Prisma

Berikut adalah langkah-langkah untuk menginstal dan melakukan konfigurasi Prisma ORM pada Express.js:

  1. Instal Prisma CLI

Kita bisa menginstal Prisma CLI secara global dan melihat versinya menggunakan npm seperti contoh di gambar 5.

A screenshot of a computer

Description automatically generated

Gambar 5. Menginstal Prisma CLI secara global.

  1. Buat direktori proyek baru atau bisa menggunakan yang sudah ada. Kemudian instal dependencies prisma menggunakan npm.

A screenshot of a computer program

Description automatically generated with medium confidence

Gambar 6. Mengintal Prisma menggunakan npm.

  1. Membuat file konfigurasi prisma menggunakan npx.

A screenshot of a computer

Description automatically generated

Gambar 7. Menginisialisasi Prisma dan membuat Prisma Schema.

A screenshot of a computer

Description automatically generated with low confidence

Gambar 8. Folder dan file baru setelah melakukan inisialisasi.

  1. Definisikan schema database pada prisma. Karena kita menggunakan database MySQL, maka kita perlu mendifinisikannya.

A screen shot of a computer

Description automatically generated with medium confidence

Gambar 9. Mendefinisikan database employee pada Prisma schema.

Pada program di gambar 9, kita menggunakan provider "mysql" karena kita menggunakan database MySQL. Url untuk mengkoneksikan dengan database yang kita miliki menggunakan perintah mysql://user:password@host:port/database.

  1. Mengambil database yang sudah kita punya atau bisa didownload pada link berikut latihan_db menggunakan npx prisma db pull.

A screenshot of a computer program

Description automatically generated with medium confidence

Gambar 10. Mengambil isi database latihan_db kedalam prisma schema.

A screenshot of a computer program

Description automatically generated with medium confidence

Gambar 11. Hasil dari npx prisma db pull.

Di Dalam database latihan_db terdapat lima tabel yang sudah memiliki kolom dan row atau bisa lihat gambar 11.

  1. Generate prisma menggunakan npx prisma generate.

A picture containing text, screenshot, font

Description automatically generated

Gambar 12. Generate prisma.

Fungsi dari generate prisma adalah menghasilkan file prisma/client yang akan digunakan untuk berinteraksi dengan basis data atau database.

  1. Konfigurasikan dengan app.js atau index.js pada aplikasi web menggunakan express atau bisa langsung menggunakan route kalian pada folder routes dan file usersPrimsa.

A computer code on a black background

Description automatically generated with low confidence

Gambar 13. Mengkonfigurasikan prisma dengan express.

A picture containing text, screenshot, font

Description automatically generated

Gambar 14. Mengkonfigurasikan prisma langsung kedalam route.

  1. Menggunakan CRUD dengan Prisma

Dengan Prisma, kalian dapat dengan mudah melakukan operasi CRUD (Create, Read, Update, Delete) pada basis data. Berikut adalah contoh implementasi operasi CRUD menggunakan Prisma dalam Express.js:

a.      GET

A picture containing text, screenshot, font

Description automatically generated

Gambar 15. Metode GET dengan Prisma.

Pada program di gambar 15, kita mengatur route di Express.js menggunakan Prisma untuk mengambil data dari tabel "employee" dalam basis data. Ketika permintaan GET diterima pada rute "/", program akan mencoba untuk mengambil data employee menggunakan Prisma dengan metode findMany(). Jika berhasil, data employee akan dikirim sebagai response, sedangkan jika terjadi kesalahan, pesan "Gagal Mengambil Data Employee!" akan dikirim sebagai response.

A picture containing text, screenshot

Description automatically generated

Gambar 16. Metode GET by id dengan Prisma.

Pada program di gambar 16, kita mengatur route di Express.js menggunakan Prisma untuk mencari data employee berdasarkan ID. Ketika permintaan GET diterima pada route "/employee/:id", program akan mencoba mencari data employee menggunakan Prisma dengan metode findUnique() berdasarkan ID employee yang diberikan. Jika data employee ditemukan, program akan mengirimkannya sebagai response JSON. Namun, jika data karyawan tidak ditemukan, program akan mengirimkan response dengan status 404 dan pesan "Data Employee Tidak Ditemukan.". Jika terjadi kesalahan selama operasi, program akan mengirimkan response dengan status 500 dan pesan "Gagal Mengambil Data Employee!".

b.      POST

A picture containing text, electronics, screenshot, software

Description automatically generated

Gambar 17. Metode Post dengan Prisma.

Pada program di gambar 17, kita mengatur route di Express.js menggunakan Prisma untuk membuat data employee baru. Ketika permintaan POST diterima pada route "/employee", program akan mencoba untuk membuat data employee baru menggunakan Prisma dengan metode create(). Data employee yang diperlukan (nama, job, salary) diambil dari request body. Jika operasi berhasil, program akan mengirim response dengan status "true", message "Data Created", dan data employee yang baru dibuat. Namun, jika terjadi kesalahan selama operasi, program akan mengirim response dengan status "false" dan message "Gagal Membuat Data Employee Baru!".

c.       PUT

A picture containing text, screenshot, font

Description automatically generated

Gambar 18. Metode PUT dengan Prisma.

Pada program di gambar 18, kita mengatur route di Express.js menggunakan Prisma untuk memperbarui data employee berdasarkan ID. Ketika permintaan PUT diterima pada route "/employee/:id", program akan mencoba untuk memperbarui data employee menggunakan Prisma dengan metode update(). ID employee yang diperlukan diambil dari request parameter, sedangkan data yang diperlukan untuk pembaruan (nama, job, salary) diambil dari request body. Jika pembaruan berhasil, program akan mengirim response dengan status "true", message "Update Success", dan data employee yang diperbarui. Namun, jika terjadi kesalahan selama operasi, program akan mengirim response dengan status "false" dan message "Gagal Memperbarui Data Employee!".

d.      DELETE

A picture containing text, screenshot, font

Description automatically generated

Gambar 19. Metode DELETE dengan Prisma.

Pada program di gambar 19, kita mengatur route di Express.js menggunakan Prisma untuk menghapus data employee berdasarkan ID. Ketika permintaan DELETE diterima pada route "/employee/:id", program akan mencoba menghapus data employee menggunakan metode delete() dari Prisma. ID employee yang diperlukan diambil dari request parameter. Jika penghapusan berhasil, program akan mengirim response dengan status "true", pesan "Delete Success", dan data karyawan yang telah dihapus. Namun, jika terjadi kesalahan selama operasi, program akan mengirim response dengan status "false" dan pesan "Gagal Menghapus Data Employee!".

[1] 

Quiz

1. Apa yang dimaksud dengan ORM?

a. Object Relational Mapping.

b. Object Reusable Model.

c. Object Relationship Model.

d. Object Relational Management.

e. Object Repository Management.

 

2. Apa kelebihan menggunakan ORM?

a. Menghemat waktu.

b. Lebih kompleks dalam penulisan kode.

c. Meningkatkan performa secara signifikan.

d. Mengoptimalkan query SQL.

e. Mempercepat proses debugging.

 

3. Apa kekurangan menggunakan ORM?

a. Tidak memerlukan pembelajaran tambahan.

b. Performa yang selalu optimal.

c. Meningkatkan kompleksitas kode.

d. Potensial menghasilkan kesalahan dalam kode.

e. Memudahkan penggantian basis data tanpa perubahan kode.

 

4. Apa yang dimaksud dengan Prisma?

a. Library untuk pembuatan aplikasi web.

b. Kerangka kerja yang menggunakan ORM.

c. Bahasa pemrograman untuk database.

d. Sistem basis data berbasis objek.

e. Library yang memudahkan akses dan manipulasi data basis data.

 

5. Apa langkah pertama dalam menginstal Prisma?

a. Menginstal Prisma CLI secara global.

b. Mengatur konfigurasi basis data.

c. Membuat direktori proyek baru.

d. Menginstall dependency Prisma.

e. Menjalankan perintah "npm install prisma".

 

6. Apa yang menjadi keuntungan menggunakan Prisma?

a. Menulis model data hanya di satu tempat.

b. Menggunakan bahasa SQL secara langsung.

c. Menghasilkan kode yang sulit dibaca.

d. Mengabstraksi sistem basis data.

e. Meningkatkan kompleksitas kode

 

7. Apa fungsi dari Prisma CLI?

a. Mengelola skema basis data.

b. Menyediakan kode repetitif.

c. Memudahkan akses ke basis data.

d. Mengoptimalkan query SQL.

e. Menulis model data dalam bahasa SQL.

 

8. Bagaimana cara menginisialisasi Prisma dan membuat Prisma Schema?

a. Menjalankan perintah "npm init".

b. Membuat file konfigurasi Prisma secara manual.

c. Menjalankan perintah "npx prisma init".

d. Menginstall Prisma CLI secara global.

e. Menyediakan URL untuk koneksi basis data.

 

9. Apa yang dilakukan saat menjalankan perintah "npx prisma db pull"?

a. Membuat file Prisma Schema.

b. Mengambil isi database ke Prisma Schema.

c. Menginisialisasi Prisma CLI.

d. Menggenerasi file Prisma Client.

e. Menjalankan operasi CRUD pada basis data.

 

10. Bagaimana cara melakukan operasi CRUD GET dengan Prisma?

a. Menggunakan metode findMany().

b. Menggunakan metode create().

c. Menggunakan metode update().

d. Menggunakan metode delete().

e. Menggunakan Prisma CLI.

Referensi

√ Apa Itu ORM, Kelebihan Kekurangan Serta Contohnya (konsepkoding.com)

Prisma | Next-generation ORM for Node.js & TypeScript


beri link dokumentasi prisma agar pembaca bisa mengeksplorasi fungsi-fungsi lain dari prisma

Last modified: Monday, 7 August 2023, 10:10 AM