Mode Malam
| Mode Tampilan
Penulis : admin

Home » Programming » Tutorial Cara Menyimpan Data Lokal Menggunakan Room - Android
Tutorial Cara Menyimpan Data Lokal Menggunakan Room - Android

Tutorial Cara Menyimpan Data Lokal Menggunakan Room - Android


Pernah gak kalian membuka aplikasi Instagram trus koneksi internetnya terputus?, kamu tutup aplikasinya dan kamu buka lagi dalam keadaan tetap tidak terkoneksi ke internet. Postingannya masih tampil di aplikasi instagramnya kan?. Yap itu karena datanya di simpan di database lokal aplikasi tersebut.

advertisement

Pada postingan kali ini kita akan belajar bagaimana membuat database lokal dengan memanfaatkan  Library Room Persistence dari google sendiri. Room membantu menjembatani akses SQLite dengan melakukan pendekatan terhadap fungsi-fungsi Sqlite secara optimal. Room sangat cocok untuk digunakan untuk aplikasi android frontend karena akan sangat memudahkan dalam membangun sistem cache pada aplikasi. Oke kita langsung saja ke tutorialnya.

Instalasi

Buka app build.gradle pada project android kalian dan di bagian dependency silahkan masukan code berikut.

dependencies {
      def room_version = "2.2.5"
      implementation "androidx.room:room-runtime:$room_version"
      annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
      // optional - Kotlin Extensions and Coroutines support for Room
      implementation "androidx.room:room-ktx:$room_version"
      // optional - RxJava support for Room
      implementation "androidx.room:room-rxjava2:$room_version"
      // optional - Guava support for Room, including Optional and ListenableFuture
      implementation "androidx.room:room-guava:$room_version"
      // Test helpers
      testImplementation "androidx.room:room-testing:$room_version"
    }

Kemudian tinggal kalian sinkronisasi untuk mendownload packagenya.

Implementasi

Untuk membangun database menggunakan room ada tiga komponen utama yang harus kalian buat.

  1. Entity adalah class model yang mereresantikan table database, contoh codenya sebagai berikut
    @Entity
        data class User(
            @PrimaryKey val uid: Int,
            @ColumnInfo(name = "first_name") val firstName: String?,
            @ColumnInfo(name = "last_name") val lastName: String?
        )

    Jika tablenya berelasi kalian bisa membuat class entitynya seperti ini

    data class Address(
            val street: String?,
            val state: String?,
            val city: String?,
            @ColumnInfo(name = "post_code") val postCode: Int
        )
    
        @Entity
        data class User(
            @PrimaryKey val id: Int,
            val firstName: String?,
            @Embedded val address: Address?
        )

    Penjelasan
    1. @Entity adalah anotasi untuk menandakan bahwa class tersebut adalah class entity. 
    2. @PrimaryKey adalah anotiasi untuk menandakan bahwa variable dibawahnya adalah primary key. 
    3. @ColumnInfo adalah anotasi opsional, jika tidak di tulis maka secara otomatis nama kolom dari table database sesuai dengan nama variable di bawahnya.

  2. Dao adalah class interface yang digunakan untuk mengimplementasikan query, contoh codenya sebagai berikut
    @Dao
        interface UserDao {
            @Query("SELECT * FROM user")
            fun getAll(): List<User>
    
            @Query("SELECT * FROM user WHERE uid IN (:userIds)")
            fun loadAllByIds(userIds: IntArray): List<User>
    
            @Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
                   "last_name LIKE :last LIMIT 1")
            fun findByName(first: String, last: String): User
    
            @Insert
            fun insertAll(vararg users: User)
    
            @Delete
            fun delete(user: User)
        }

    Penjelasan
    1. @Dao adalah anotasi yang menandakan bahwa class interface tersebut adalah komponen Dao.
    2. @Query adalah anotasi yang digunakan untuk membuat sebuah query dan diimlementasikan pada methode yang ada dibawahnya
    3. @Insert adalah anotasi yang menandakan bahwa methode yang ada dibawahnya berfungsi untuk menginsert data
    4. @Delete adalah anotasi yang menandakan bahwa methode yang berada dibawahnya berfungsi untuk mendelete data

  3. Database adalah class abstract yang berfungsi untuk menghubungkan antara aplikasi dengan database Sqlitenya. Contoh codenya sebagai berikut.
    @Database(entities = arrayOf(User::class), version = 1)
        abstract class AppDatabase : RoomDatabase() {
            abstract fun userDao(): UserDao
        }

    Penjelasan

    Didalam anotasi @Database kita harus menyertakan entity-entity dari class entity yang sudah kita buat. Kemudian kita buat methode abstract dengan return type yaitu class interface  Dao nya.

    Jika tiga komponen diatas sudah kalian buat sekarang kita tinggal kita gunakan dengan membuat intace databsenya. Code sebagai berikut.

    val db = Room.databaseBuilder(
                    applicationContext,
                    AppDatabase::class.java, "database-name"
                ).build()

     

Mungkin itu saja yang bisa saya bagikan kepada sobat sekalian tentang dasar dasar menyimpan data menggunakan Room. Untuk lebih jelasnya kalian bisa langsung mempelajarinya di sini.

advertisement

Sekian dulu tutorial kali ini, terimakasih sudah mampir. Jangan lupa di share jika kalian merasa artikel ini bermanfaat, kalau ada pertanyaan silahkan tulis di kolom komentar. Good Luck!

Tags: #android #room #database
Bagikan :

Komentar:

Silahkan berkomentar dengan baik dan bijak!

Name * :
Email :
Website :
Comment :


This website uses cookies to ensure you get the best experience on our website

learn more