Database dan Penyimpanan

| Author | Editor |
1 September 2025
45 minutes

Database dan Penyimpanan

Pengertian Database

Database adalah kumpulan data yang terorganisir dengan baik dan disimpan secara elektronik di dalam sebuah sistem komputer. Database memungkinkan pengguna untuk menyimpan, mengelola, dan mengambil data dengan cara yang efisien.

Perbedaan Database Lokal dengan Database Remote

Database Lokal

Database yang disimpan di perangkat lokal pengguna, misalnya di dalam memori atau penyimpanan internal perangkat. Contoh: SQLite, Hive.

Database Remote

Database yang disimpan di server dan diakses melalui internet. Contoh: MySQL, PostgreSQL, Supabase.

CRUD

CRUD adalah singkatan dari Create, Read, Update, dan Delete, yang merupakan operasi dasar untuk mengelola data di dalam database. Berikut penjelasannya:

  • Create: Menambahkan data baru ke database.
  • Read: Membaca atau mengambil data dari database.
  • Update: Memperbarui data yang sudah ada di database.
  • Delete: Menghapus data dari database.

Supabase

Supabase adalah platform backend sebagai layanan yang menyediakan berbagai fitur seperti autentikasi, penyimpanan, dan database yang menggunakan PostgreSQL sebagai basisnya. Supabase memungkinkan pengembang untuk mengatur dan mengelola database dengan mudah tanpa harus mengurus infrastruktur server.

Setup Database dan Tabel di Supabase

Sebelum menggunakan kode CRUD dengan Supabase, Anda perlu melakukan setup database dan membuat tabel di Supabase. Berikut langkah-langkahnya:

Buka halaman supabase.io dan klik tombol “Login” di bagian kanan atas.

Masukkan alamat email dan kata sandi Anda untuk login atau buat akun baru jika belum memiliki akun.

Setelah login, Anda akan diarahkan ke dashboard Supabase Anda.

Klik tombol “New Project” untuk membuat proyek baru.

Beri nama proyek Anda dan pilih lokasi wilayah server yang tersedia.

Setelah proyek dibuat, Anda akan diberikan URL proyek dan kunci akses publik. Simpan informasi ini dengan aman karena akan digunakan dalam kode Anda.

Buat Tabel di Supabase

Di dashboard Supabase, pilih proyek yang telah Anda buat.Pilih “SQL Editor” dari menu di sebelah kiri.

Di SQL Editor, jalankan perintah SQL untuk membuat tabel.

CREATE TABLE table_name (
    id SERIAL PRIMARY KEY,
    column1 TEXT,
    column2 TEXT
);

Pastikan untuk mengganti table_name, column1, dan column2 sesuai dengan kebutuhan aplikasi Anda.

Menambahkan Dependensi Supabase

Tambahkan supabase_flutter ke dalam pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  supabase_flutter: ^2.5.3

lalu tekan CRTL + S untuk save sekaligus update depedencies yang ada di pubspec.yaml.

CRUD dengan Supabase

import 'package:supabase_flutter/supabase_flutter.dart';

final client = SupabaseClient('(ganti menjadi nama url project-mu)',
    '(ganti menjadi public anon key-mu)');

// Create
Future<void> createData() async {
  try {
    final response = await client
        .from('table_name')
        .insert({'column1': 'value1', 'column2': 'value2'});

    print('Data created: ${response}');
  } catch (e) {
    print('Error: ${e}');
  }
}

// Read
Future<void> readData() async {
  try {
    final response = await client.from('table_name').select();

    print('Data read: ${response}');
  } catch (e) {
    print('Error: ${e}');
  }
}

// Update
Future<void> updateData() async {
  try {
    final response = await client
        .from('table_name')
        .update({'column1': 'new_value'}).eq('id', 1);

    print('Data updated: ${response}');
  } catch (e) {
    print('Error: ${e}');
  }
}

// Delete
Future<void> deleteData() async {
  try {
    final response = await client.from('table_name').delete().eq('id', 1);

    print('Data deleted: ${response}');
  } catch (e) {
    print('Error: ${e}');
  }
}

Hive

Hive adalah database NoSQL lokal yang ringan dan cepat untuk Flutter. Hive dirancang untuk menyimpan data dalam bentuk key-value dan cocok digunakan untuk aplikasi mobile karena performanya yang cepat dan mudah digunakan.

Menambahkan Dependensi Hive

Tambahkan hive dan hive_flutter ke dalam pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  hive: ^2.0.0
  hive_flutter: ^1.0.0

lalu tekan CRTL + S untuk save sekaligus update depedencies yang ada di pubspec.yaml.

CRUD dengan Hive

import 'package:hive/hive.dart';
import 'package:hive_flutter/adapters.dart';

// Initialize Hive
void main() async {
 await Hive.initFlutter();
 var box = await Hive.openBox('myBox');

 // Create
 box.put('key', 'value');
 print('Data created: ${box.get('key')}');

 // Read
 var value = box.get('key');
 print('Data read: $value');

 // Update
 box.put('key', 'new_value');
 print('Data updated: ${box.get('key')}');

 // Delete
 box.delete('key');
 print('Data deleted: ${box.get('key')}'); // should print null
}

Pada materi ini, kita telah mempelajari tentang pengertian database, CRUD, perbedaan antara database lokal dan database biasa, serta pengenalan dan contoh implementasi CRUD dengan Supabase dan Hive di Flutter. Dengan memahami konsep-konsep ini, Anda bisa mulai mengelola data dalam aplikasi Flutter dengan baik menggunakan kedua jenis database ini.

Jika kalian ingin tahu lebih lanjut tentang materi diatas kalian bisa check langsung dokumentasi Supabase dan Hive.

Tags

flutter mobile advanced