Tutorial Restful API Golang #2 : Setup Database Dengan Gorm


Tutorial Restful API Golang #2 : Setup Database Dengan Gorm

Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar bersama-sama bagaimana cara membuat project Go baru dan menambahkan Gin sebagai web framework-nya.

Dan pada artikel kali ini, kita semua akan belajar bagaimana cara melakukan konfigurasi database di Go menggunakan Gorm.

Apa itu Gorm ?

GORM (Go ORM) merupakan library Object-Relational Mapping (ORM) populer untuk bahasa pemrograman Golang. ORM berfungsi untuk menyederhanakan interaksi antara aplikasi Go dengan database relasional, memungkinkan developer untuk bekerja dengan objek dan struktur data Go tanpa perlu menulis SQL (Structured Query Language) secara eksplisit.

Kelebihan menggunakan GORM:

  1. Pendekatan "Convention over Configuration": GORM memiliki banyak pengaturan default yang telah ditentukan, sehingga developer tidak perlu menghabiskan waktu untuk konfigurasi rumit. Hal ini memungkinkan developer untuk fokus pada logika bisnis aplikasi.
  2. Keramahan Developer: GORM dirancang dengan mempertimbangkan kemudahan penggunaan. Syntax yang intuitif dan dokumentasi yang lengkap membuat GORM mudah dipelajari dan digunakan, bahkan bagi developer Go pemula.
  3. Fitur Lengkap: GORM menawarkan berbagai fitur canggih seperti migrasi database, caching, transaksi, dan hubungan antar tabel. Fitur-fitur ini membantu developer untuk membangun aplikasi yang kompleks dan skalabel dengan lebih mudah.
  4. Performa Tinggi: GORM dioptimalkan untuk performa dan menawarkan berbagai cara untuk meningkatkan kecepatan query database.
  5. Komunitas Aktif: GORM memiliki komunitas developer yang aktif dan suportif. Hal ini berarti developer dapat dengan mudah menemukan bantuan dan jawaban atas pertanyaan mereka.

Langkah 1 - Installasi Gorm ORM

Sekarang, kita akan belajar menginstall library Gorm dan driver MySQL untuk Gorm di dalam project Go yang kita miliki.

Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Go-nya.

go get -u gorm.io/gorm gorm.io/driver/mysql

Langkah 2 - Membuat Model Post

Gorm menggunakan struct yang ada pada Go untuk mendefinisikan sebuah table database. Di dalam struct akan berisi field dengan tipe data dasar dari Go.

Sekarang, silahkan teman-teman buat folder baru dengan nama models dan di dalam folder tersebut, silahkan buat file baru dengan nama post.go, kemudian masukkan kode berikut ini di dalamnya.

models/post.go

package models

type Post struct {
	Id      int    `json:"id" gorm:"primary_key"`
	Title   string `json:"title"`
	Content string `json:"content"`
}

Di atas, kita membuat struct dedngan nama Post. Dan di dalamnya kita membuat beberapa property, yaitu:

  1. Id (int): Properti ini merupakan identifikasi unik dari sebuah post. Ini digunakan sebagai primary key, ditandai dengan tag gorm:"primary_key". Tag json:"id" menandakan bahwa ketika struktur ini diubah menjadi JSON, properti ini akan dinamai "id".
  2. Title (string): Properti ini menyimpan judul dari post. Dengan tag json:"title", properti ini akan dinamai "title" saat struktur diubah menjadi JSON.
  3. Content (string): Properti ini menyimpan konten atau isi dari post. Seperti properti sebelumnya, tag json:"content" menandakan bahwa saat struktur diubah menjadi JSON, properti ini akan dinamai "content".

Langkah 3 - Membuat Koneksi Database

Setelah berhasil membuat Model, maka kita akan melakukan konfigurasi koneksi database di project Go. Silahkan teman-teman buat file baru dengan nama setup.go di dalam folder models, kemudian masukkan kode berikut ini.

models/setup.go

package models

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

var DB *gorm.DB

func ConnectDatabase() {
	database, err := gorm.Open(mysql.Open("root:@tcp(127.0.0.1:3306)/db_go_api"), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	database.AutoMigrate(&Post{})

	DB = database
}

Dari penambahan kode di atas, pertama kita import 2 library yaitu Gorm dan driver MySQL dari Gorm.

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

Setelah itu, kita membuat variable global bernama DB dengan tipe data *gorm.DB. Variabel ini akan menampung pointer (alamat memori) ke objek database yang akan dibuat nanti.

var DB *gorm.DB

Kemudian kita buat function baru dengan nama connectDatabase. Di dalam fungsi ini, kita melakukan konfigurasi koneski ke MySQL.

database, err := gorm.Open(mysql.Open("root:@tcp(127.0.0.1:3306)/db_go_api"), &gorm.Config{})

Kode di atas, digunakan untuk menghubungkan ke database MySQL dengan beberapa konfig berikut ini.

  • root: Username MySQL.
  • @tcp(127.0.0.1:3306): Alamat dan port server database MySQL.
  • db_go_api: Nama database yang akan kita gunakan.

Kemudian kita membuat pengecekan apakah koneksi berhasil atau tidak.

if err != nil {

	panic("failed to connect database")

}

Jika berhasil, maka kita akan menjalankan proses migrasi untuk mengenerate table dari struct yang sudah kita buat sebelumnya di model Post.

database.AutoMigrate(&Post{})

Kemudian kita simpan objek database yang telah dibuat ke dalam variabel global DB.

DB = database

Langkah 4 - Membuat Database di MySQL

Sekarang kita akan membuat database-nya di MySQL, jika teman-teman memiliki PhpMyAdmin, maka silahkan buka di http://localhost/phpmyadmin, kemudian buat database baru dengan nama db_go_api.

Kesimpulan

Pada artikel kali ini, kita telah belajar bersama-sama bagaimana cara menginstall dan konfigurasi Gorm di dalam project Go yang kita miliki.

Pada artikel berikutnya, kita semua akan belajar bagaimana cara menampilkan list data dari database dalam format JSON di Go.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami