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.