Realm adalah solusi database seluler yang memberikan alternatif terhadap database SQL tradisional seperti SQLite. Ini dirancang khusus untuk perangkat seluler dan telah menjadi pilihan populer untuk menyimpan dan memanipulasi data dalam aplikasi Android. Pada artikel ini, kita akan mempelajari dasar-dasar Realm dan cara menggunakannya di Android untuk menyimpan, mengambil, dan memanipulasi data.

Apa itu Alam? Realm adalah solusi database berorientasi objek sumber terbuka yang dibuat khusus untuk perangkat seluler. Ini menyediakan cara sederhana, cepat, dan efisien untuk menyimpan data di perangkat seluler. Berbeda dengan database SQL tradisional, Realm tidak didasarkan pada model relasional, sehingga lebih mudah digunakan dan lebih efisien untuk menyimpan data di perangkat seluler.

Memulai Realm di Android Untuk memulai Realm di Android, Anda perlu menambahkan perpustakaan Realm ke proyek Anda. Hal ini dapat dilakukan dengan menambahkan baris berikut ke file build.gradle aplikasi Anda:

implementation 'io.realm:realm-android:<latest-version>'

Selanjutnya, Anda perlu membuat instance database Realm. Anda dapat melakukan ini dengan membuat kelas yang memperluas kelas RealmObject, seperti:

import io.realm.RealmObject
import io.realm.annotations.PrimaryKey

open class Person(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var age: Int = 0
) : RealmObject()

Dengan instans database Realm dibuat, Anda sekarang dapat mulai menyimpan dan mengambil data.

Pilih

Untuk mengambil data dari database Realm, Anda dapat menggunakan metode where untuk memfilter hasilnya, seperti:

val realm = Realm.getDefaultInstance()
val results = realm.where(Person::class.java).findAll()

Menyisipkan

Untuk memasukkan data ke dalam database Realm, Anda dapat membuat instance baru dari RealmObject dan menggunakan metode copyToRealm untuk menyimpannya, seperti:

val realm = Realm.getDefaultInstance()
realm.beginTransaction()
val person = realm.createObject(Person::class.java, primaryKeyValue)
person.name = "John Doe"
person.age = 30
realm.commitTransaction()

Memperbarui

Untuk memperbarui data di database Realm, Anda dapat menggunakan metode copyToRealmOrUpdate untuk menyimpan perubahan, seperti:

val realm = Realm.getDefaultInstance()
realm.beginTransaction()
val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst()
person?.name = "Jane Doe"
realm.commitTransaction()

Menghapus

Untuk menghapus data dari database Realm, Anda dapat menggunakan metode delete, seperti:

val realm = Realm.getDefaultInstance()
realm.beginTransaction()
val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst()
person?.deleteFromRealm()
realm.commitTransaction()

Hubungan

Hubungan satu-ke-satu: Dalam hubungan satu-ke-satu, sebuah instance dari satu RealmObject hanya terkait dengan satu instance dari RealmObject lainnya. Misalnya, perhatikan objek Person dan Address. Objek Person memiliki satu Address, sehingga Anda dapat mendefinisikan hubungan ini di Realm dengan menambahkan bidang Address ke objek Person.

import io.realm.RealmObject
import io.realm.annotations.PrimaryKey

open class Person(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var age: Int = 0,
    var address: Address? = null
) : RealmObject()

open class Address(
    @PrimaryKey var id: Int = 0,
    var street: String = "",
    var city: String = "",
    var state: String = "",
    var zip: String = ""
) : RealmObject()

Hubungan satu-ke-banyak: Dalam hubungan satu-ke-banyak, sebuah instance dari satu RealmObject terkait dengan beberapa instance dari RealmObject lainnya. Misalnya, perhatikan objek Person dan Pet. Objek Person dapat memiliki beberapa objek Pet, sehingga Anda dapat mendefinisikan hubungan ini di Realm dengan menambahkan RealmList dari objek Pet ke objek Person.

import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey

open class Person(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var age: Int = 0,
    var pets: RealmList<Pet> = RealmList()
) : RealmObject()

open class Pet(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var breed: String = ""
) : RealmObject()

Hubungan banyak ke banyak: Dalam hubungan banyak ke banyak, sebuah instance dari satu RealmObject terkait dengan beberapa instance dari RealmObject lain, dan sebaliknya. Misalnya, perhatikan objek Person dan Event. Sebuah objek Person dapat menampung beberapa objek Event, dan sebuah objek Event dapat menampung beberapa objek Person. Untuk mengimplementasikan hubungan ini, Anda akan menambahkan RealmList dari Person objek ke objek Event dan RealmList dari Event objek ke objek Person.

import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey

open class Person(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var age: Int = 0,
    var events: RealmList<Event> = RealmList()
) : RealmObject()

open class Event(
    @PrimaryKey var id: Int = 0,
    var name: String = "",
    var date: String = "",
    var attendees: RealmList<Person> = RealmList()
) : RealmObject()

Kesimpulannya, Realm adalah solusi database seluler yang kuat dan efisien yang memudahkan penyimpanan, pengambilan, dan manipulasi data dalam aplikasi Android. API Realm yang intuitif, kinerja yang kuat, dan dukungan bawaan untuk hubungan menjadikannya pilihan populer untuk mengembangkan aplikasi berbasis data. Baik Anda bekerja dengan data dalam jumlah kecil atau mengelola kumpulan data besar, Realm menyediakan alat dan fitur yang Anda perlukan untuk membangun dan memelihara aplikasi berkinerja tinggi dan skalabel. Jika Anda mencari solusi database yang cepat dan andal untuk proyek Android Anda, pertimbangkan untuk mencoba Realm.