Introduction:
Realm Mobile Database
adalah sebuah open source mobile database
yang dibuat sebagai alternatif SQLite dan Core Data. Realm lebih cepat dari
SQLite dan ORM library lainnya. Realm lebih mudah digunakan, mempunyai API yang
simple. Realm juga support untuk beberapa bahasa yaitu Java,
Obj-C, Swift, React Native (JavaScript), dan Xamarin.
Keuntungan:
- Fast!
- Cross-Platform
- Easy to use
- Reduce dev time
- Good documentation
Berikut adalah grafik
perbandingan kecepatan dengan SQLite
Pada tulisan ini, saya hanya menunjukkan cara menggunakan Realm dalam Android saja.
Getting Started:
Pertama, pada project build.gradle dalam Android Studio tambahkan library berikut
Selanjutnya, pada app build.gradle dalam Android Studio tambahkan plugin berikut
Kemudian buat sebuah class dengan meng-extend aplication untuk membuat konfigurasi Realm yang nantinya ditambahkan kedalam file manifest project. Berikut contoh kofigurasi Realm
Selanjutnya konfigurasi tersebut bisa digunakan dimana saja.
SQLite vs Realm:
Misalnya kita ingin membuat sebuat tabel contact yang berisi kolom id, nama, dan nomor telepon. Dengan SQLite kita bisa membuat tabel seperti ini
Bayangkan jika kolom ada lebih dari 10 dst, pasti akan repot sekali ketik satu-satu. Dengan Realm kita tidak perlu repot-repot mengetik seperti SQLite. Kita hanya perlu membuat model class dengan meng-extend RealmObject dan generate getter-setter. Kekurangannya primary key ID pada Realm tidak tersedia auto-increment, sehingga kita harus membuat custom auto-increment atau menggunakan UUID pada java. Contoh model class Realm seperti ini
Selanjutnya untuk contoh method retrieve dalam SQLite seperti berikut
SQLite menggunakan cursor untuk mendapatkan hasil query, selanjutnya dikonversi kembali kedalam object java. Hal ini cukup merepotkan, ketika tabel mempunyai kolom yang banyak dan juga kita harus teliti dengan tipe variabel yang akan dikonversikan. Dengan Realm kita hanya perlu beberapa kode baris saja, contohnya seperti
Untuk method add, update, delete tidak jauh berbeda baik SQLite dan Realm.
More Features:
Fitur-fitur lain dalam Realm, sebagai berikut
1. Query Options
@Required: Memberlakukan pemeriksaan untuk tidak membolehkan nilai null.
@Ignore: Kolom tidak harus disimpan.
@Index: Menambahkan index pencarian pada kolom.
@PrimaryKey: Identifikasi unik pada tiap database.
- Conditions:
between(), greaterThan(), lessThan(),
greaterThanOrEqualTo() & lessThanOrEqualTo()
equalTo() & notEqualTo()
contains(), beginsWith() & endsWith()
isNull() & isNotNull()
beginsWith() & endsWith() & contains()
- Conditions Grouping:
beginGroup() & endGroup() & not() & or()
- Sorting
RealmResults<User> result = realm.where(User.class).findAll();
result.sort("age", RealmResults.SORT_ORDER_DESCENDING);
- Querying
findAll() & findFirst() & findAllSorted()
2. Annotations
3. And Many More Features . . . .
Masih banyak lagi fitur-fitur yang disediakan oleh Realm, seperti enkripsi, schema, migrations, asynchronous transactions, dynamic realm, UI control, browser, dll.
Lebih lengkapnya silahkan buka docs realm :))
Terima kasih :D
Referensi:
No comments:
Post a Comment