Room
Room adalah sebuah komponen dalam Android Jetpack yang menyediakan pemetaan object relasional (ORM) untuk memudahkan akses dan penggunaan database SQLite di aplikasi Android. Room memberikan lapisan abstraksi yang kuat diatas SQLite dan menyederhanakan proses pembuatan dan penggunaan database.
Pada dasarnya room terdiri dari tiga komponen utama, diantaranya:
1. Entity
Entity adalah kelas yang mewakili tabel dalam database. Setiap entitas memiliki properti yang sesuai dengan kolom-kolom dalam tabel. Kalian dapat menggunakan anotasi seperti @Entity, @PrimaryKey, @ColumnInfo, dan lainnya untuk mendefinisikan entitas dengan atribut-atribut yang sesuai.
2. DAO (Data Access Object)
DAO adalah antarmuka yang berisi metode-metode untuk mengakses data dalam database. Metode-metode tersebut dapat berupa operasi CRUD (Create, Read, Update, Delete) seperti insert, update, delete, dan query. kalian dapat menggunakan anotasi seperti @Insert, @Update, @Delete, @Query, dan lainnya untuk menghubungkan metode-metode DAO dengan operasi yang sesuai pada tabel-tabel dalam database.
1. @insert
2. @update
3. @delete
4. @query
3. Database
Database adalah kelas yang merepresentasikan database SQLite. Database class di Room harus menjadi subclass dari RoomDatabase dan mendefinisikan daftar entitas yang terkait dengan database serta versi database. kalian juga dapat menentukan operasi migrasi jika skema database berubah di masa depan.
Keuntungan menggunakan Room dalam pengembangan aplikasi Android adalah sebagai berikut:
1. Pemetaan Objek-Relasional yang Mudah
Room memungkinkan kalian untuk menggunakan objek-objek Java/Kotlin sebagai representasi data dalam aplikasi, dan Room akan secara otomatis melakukan pemetaan objek-relasional ke dalam tabel-tabel dalam database SQLite.
2. Kompatibilitas dengan LiveData dan RxJava
Room mendukung integrasi dengan komponen-komponen lain dalam Android Jetpack seperti LiveData dan RxJava. Ini memungkinkan kalian untuk mengamati perubahan data secara real-time dan mengimplementasikan pemrograman reaktif dengan mudah.
3. Validasi Data yang Mudah
kalian dapat menggunakan anotasi di Room untuk melakukan validasi data, seperti menentukan batasan nullability, panjang maksimum, atau aturan validasi khusus pada kolom-kolom dalam tabel.
4. Kode yang Lebih Bersih dan Terstruktur
Dengan menggunakan Room, kalian dapat mengelola operasi database dengan lebih terstruktur dan terorganisir. Room secara otomatis melakukan banyak tugas yang berulang dan kompleks seperti pembuatan skema database, migrasi versi database, dan pengelolaan koneksi ke database.
5. Performa yang Lebih Baik
Room dirancang untuk memberikan performa yang baik dengan menggunakan mekanisme seperti penggunaan statement pra-kompilasi, pemantauan perubahan data, dan caching yang efisien.
(Referensi: https://developer.android.com/codelabs/android-room-with-a-view-kotlin?hl=id#0)