Menyiapkan Akses Database dengan Room

Room mempunyai tiga komponen yaitu:

  • Sebuah class abstrak untuk penghubung ke database (Class database)
  • Sebuah class data yang berisi struktur tabel (Entity Data)
  • Sebuah interface yang berisi query  (DAO – Data Access Object )

 

1. Entity

Adalah class yang berisi struktur tabel

Contoh:

Buatlah sebuah file User.kt lalu masukkan kode berikut ini:

@Entity
data class User (

@PrimaryKey (autoGenerate = true) val id:Int = 0,
@ColumnInfo(name = “nama”) val nama: String,
@ColumnInfo(name = “tgl_lahir”) val tgl_lahir: String,
@ColumnInfo(name = “jenis_kelamin”) val jenis_kelamin: String,
@ColumnInfo(name = “agama”) val agama: String,
@ColumnInfo(name = “hobi”) val hobi: String?

)

Keterangan:

  • Auto Increment dibuat dengan autoGenerate  dan nilai awal 0

 

2. Objek untuk mengakses Data (DAO – Data Access Object)

Adalah sebuah class yang digunakan untuk berinteraksi dengan Entity seperti mengambil data / menyimpan data / menghapus data

Contoh:

Buatlah sebuah file bernama UserDao.kt lalu masukkan kode berikut ini:

@Dao
interface UserDao {

@Insert

fun insertAll(vararg users: User)

}

Keterangan:

  • vararg adalah bisa berisi satu parameter atau jika lebih dari satu maka parameter-parameternya dipisahkan dengan koma dan diperlakukan sebagai array saat diproses dalam fungsi

 

3. Class Database

Adalah sebuah class yang mewakili database yang berisi array dari entity serta fungsi yang mewarisi dari interface DAO

Contoh:

Buatlah sebuah file bernama AppDatabase.kt lalu masukkan kode berikut ini:

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase(){

abstract fun userDao(): UserDao

}

Keterangan:

  • Jika Entity-nya lebih dari satu maka dipisahkan dengan koma
  • Fungsi Abstrak database harus bertipe Class DAO yang sudah dibuat