GORM Mempermudah Akses Database dalam Membangun Aplikasi

  • 4 min read
  • Sep 21, 2023
GORM Mempermudah Akses Database dalam Membangun Aplikasi - Etalastok.com

Dalam pengembagan aplikasi modern, akses ke database sering menjadi hal yang vital. Kita perlu berinteraksi dengan database untuk menyimpan, mengambil, dan memperbarui data.

Namun, proses ini seringkali rumit dan memakan waktu, terutama jika kita harus menulis kueri SQL yang kompleks. Namun, dengan kehadiran GORM, proses akses database menjadi jauh lebih mudah dan efisien. 

Kamu mungkin bertanya-tanya, “Apa itu GORM?” Nah, GORM adalah ORM, singkatan dari Object-Relational Mapping. Dan jika Kamu masih bingung, tidak apa-apa, karena saya akan menjelaskan dengan simpel.

Apa itu GORM?

GORM merupakan sebuah Object Relational Mapping (ORM) yang populer dalam ekosistem bahasa pemrograman Go. ORM adalah teknik yang menghubungkan antara objek di dalam kode dengan baris-baris dalam tabel database, sehingga kita dapat berinteraksi dengan database menggunakan objek dan metode yang lebih familiar.

GORM Mempermudah Akses Database dalam Membangun Aplikasi Golang - www.etalastok.com

Salah satu keuntungan utama GORM adalah kemampuannya untuk menyederhanakan operasi CRUD (Create, Read, Update, Delete) pada database. Kita tidak lagi perlu menuliskan kueri SQL secara eksplisit, melainkan menggunakan metode dan fungsi yang disediakan oleh GORM. Hal ini membuat kode menjadi lebih bersih, mudah dibaca, dan mudah dikelola.

// Contoh membuat perintah menyimpan data (insert)

user := User{Name: "Aydan Ibrahim", Age: 17, Birthday: time.Now()}
result := db.Create(&user)

Selain itu, GORM juga menyediakan fitur-fitur canggih seperti query chaining, soft delete, transaction management, association mapping, dan banyak lagi. Fitur-fitur tersebut memudahkan pengembang dalam mengelola dan memanipulasi data dalam database.

GORM juga mendukung berbagai jenis database, termasuk MySQL, PostgreSQL, SQLite, dan MongoDB. Dengan kemampuan ini, GORM menjadi pilihan yang fleksibel dalam pengembangan aplikasi, terlepas dari jenis database yang digunakan.

Kenapa Butuh ORM?

Pada dasarnya, ORM adalah perantara antara basis data (seperti PostgreSQL, MySQL, atau SQLite) dan kode Golang. Alat ini membantu Kamu berinteraksi dengan basis data tanpa harus menulis SQL mentah berulang kali. Ini adalah penyederhanaan besar-besaran.

Bayangkan Kamu sedang membangun aplikasi web yang memerlukan penyimpanan data seperti informasi pengguna atau produk. Biasanya, Kamu akan berurusan dengan tabel-tabel dalam basis data. Dengan ORM, Kamu dapat memodelkan tabel-tabel ini sebagai struktur data dalam kode Go. 

Contoh Penggunaan GORM

Mari kita lihat contoh sederhana. Katakanlah kita memiliki tabel “Pengguna” dalam basis data yang berisi informasi pengguna, seperti nama dan email. Dengan GORM, Kamu bisa melakukan sesuatu seperti ini:

type User struct {
    gorm.Model
    Name  string
    Email string `gorm:"unique"`
}

// Membuat tabel "Users" di basis data
db.AutoMigrate(&User{})

// Menambahkan pengguna baru
user := User{Name: "Aydan", Email: "aydan@example.com"}
db.Create(&user)

// Mencari pengguna berdasarkan email
var foundUser User
db.Where("email = ?", "aydan@example.com").First(&foundUser)

Pentingnya adalah bahwa Kamu tidak perlu menulis SQL untuk melakukan tugas-tugas ini. GORM memungkinkan Kamu berinteraksi dengan basis data menggunakan bahasa Go yang familiar.

Kelebihan dan kekurangan menggunakan GORM

Menggunakan GORM dalam pemrograman Golang memiliki sejumlah kelebihan dan kekurangan yang perlu dipertimbangkan sebelum memutuskan apakah GORM sesuai untuk proyek Kamu. Di bawah ini adalah ringkasan kelebihan dan kekurangan GORM:

Kelebihan GORM:

1. Abstraksi Basis Data

Salah satu kelebihan utama GORM adalah kemampuannya untuk mengabstraksi interaksi dengan basis data. Ini memungkinkan pengembang untuk berfokus pada logika aplikasi daripada menulis SQL mentah secara manual.

2. Mudah Digunakan

GORM dirancang untuk menjadi mudah digunakan, terutama bagi pengembang yang sudah terbiasa dengan bahasa Go. Struktur data dalam kode sangat mirip dengan tabel dalam basis data.

3. Fitur Lengkap

GORM menyediakan berbagai fitur yang berguna, seperti dukungan untuk relasi tabel, query yang kuat, migrasi basis data otomatis, validasi data, dan banyak lagi. Ini mempercepat pengembangan aplikasi.

4. Dukungan untuk Berbagai Basis Data

GORM mendukung berbagai sistem manajemen basis data (DBMS) populer seperti PostgreSQL, MySQL, SQLite, dan lain-lain. Ini memberikan fleksibilitas dalam pemilihan basis data sesuai kebutuhan proyek.

MySQL

import (
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)

func main() {
  // refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details
  dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

PostgreSQL

import (
  "gorm.io/driver/postgres"
  "gorm.io/gorm"
)

dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})

Untuk koneksi database lainnya Kamu bisa cek langsung dokumentasinya disini Gorm Connection Database

5. Komunitas yang Kuat

GORM adalah salah satu ORM yang paling populer di komunitas Golang. Ini berarti ada banyak dokumentasi, tutorial, dan dukungan komunitas yang dapat membantu jika Kamu mengalami masalah.

Kekurangan GORM:

1. Kurva Pembelajaran

Meskipun GORM dirancang untuk menjadi mudah digunakan, ada sedikit kurva pembelajaran yang terkait dengan pemahaman konsep ORM, terutama jika Kamu belum pernah menggunakannya sebelumnya.

2. Kinerja

Dalam beberapa kasus, GORM mungkin tidak secepat menulis query SQL mentah secara manual, terutama jika query tersebut kompleks. Oleh karena itu, dalam situasi yang memerlukan kinerja sangat tinggi, Kamu mungkin perlu menulis query SQL khusus. Kamu bisa menggunakan Raw seperti berikut:

type Result struct {
  ID   int
  Name string
  Age  int
}

var result Result
db.Raw("SELECT id, name, age FROM users WHERE id = ?", 3).Scan(&result)

var users []User
db.Raw("UPDATE users SET name = ? WHERE age = ? RETURNING id, name", "jinzhu", 20).Scan(&users)

3. Penggunaan Memori

GORM bisa menjadi memori-intensif dalam beberapa situasi karena mengeksplorasi struktur data yang besar dan menginstansiasi objek dalam memori.

4. Kustomisasi yang Terbatas

Meskipun GORM memberikan banyak fitur, dalam beberapa situasi Kamu mungkin memerlukan tingkat kustomisasi yang lebih tinggi, yang sulit dicapai dengan GORM. Kamu mungkin perlu menulis query SQL khusus dalam kasus seperti itu.

5. Pentingnya Pengaturan yang Tepat

GORM memerlukan pengaturan yang tepat untuk bekerja dengan baik. Salah konfigurasi dapat menyebabkan masalah dalam penggunaan aplikasi.

Dalam kebanyakan kasus, kelebihan GORM dalam hal produktivitas dan kemudahan penggunaan jauh lebih besar daripada kekurangannya. Namun, sangat penting untuk mempertimbangkan kebutuhan proyek Golang Kamu dan tingkat kendali yang Kamu perlukan atas interaksi dengan basis data sebelum memutuskan apakah GORM adalah pilihan yang tepat.

Penutup

Terkadang, mengakses database dengan cara konvensional dapat menjadi pekerjaan yang menjengkelkan dan rumit. Namun, dengan menggunakan GORM, proses akses database dapat menjadi lebih bersih, efisien, dan mudah dipahami.

GORM tidak hanya mempermudah kita dalam berinteraksi dengan database, tetapi juga meningkatkan produktivitas pengembangan aplikasi secara keseluruhan. Jadi, jika Kamu ingin merasakan kemudahan dalam pembangunan aplikasi, tidak ada salahnya untuk mencoba GORM.