Last Updated on 7 years by Mas Herdi
Melanjutkan series tutorial tentang membuat aplikasi database CRUD sederhana menggunakan Room library di Android dengan Android Studio. Setelah sebelumnya kita sudah belajar tentang bagaimana cara mengimport Room library di Android Studio project. Maka kali ini kita akan belajar membuat Entity, DAO dan Database menggunakan Room Persistence Library.
Entity, DAO dan Database pada Room
Oke walaupun pada postingan sebelumnya sudah dijelaskan, tapi di sini saya akan mengulang kembali definisi dari Entity, DAO dan Database pada Room.
Entity adalah ibaratnya sebuah tabel yang merepresentasikan object di dunia nyata. Pada tutorial CRUD ini kita akan memakai entity berupa sebuah barang.
DAO / Database Access Object, adalah sebuah kelas yang berisi methods yang digunakan untuk mengakses database.
Database adalah class yang berisi daftar DAO yang bisa dipakai, kelas ini juga berisi versi dari database yang kita gunakan pada aplikasi.
Sebelum kita lanjut, ada baiknya kalian membaca postingan-postingan di bawah ini terlebih dahulu :
Pre-Requisites :
- Membuat Project Baru di Android Studio
- Mengimport Room Library di Android Studio
- Tutorial Lengkap SQLite
Membuat Entity pada Room Database Android
Apabila kalian sudah selesai mempraktekkan postingan di atas, maka buka project Android Studio baru kalian. Pertama-tama kita akan membuat class Entity nya terlebih dahulu. Karena pada aplikasi CRUD inventaris sederhana ini object yang ingin kita simpan adalah barang, maka kita akan membuat tabel dari object barang tersebut. Dengan atribut-atributnya antara lain, id barang (primary key), nama barang, merk barang dan harga barang.
Maka buat class Barang.java sebagai entity, dan isikan kode berikut :
Barang.java
package co.twoh.roomtutorial.model; import android.arch.persistence.room.ColumnInfo; import android.arch.persistence.room.Entity; import android.arch.persistence.room.PrimaryKey; import java.io.Serializable; /** * Created by Herdi_WORK on 21.01.18. */ @Entity(tableName = "tbarang") public class Barang implements Serializable{ @PrimaryKey(autoGenerate = true) public int barangId; @ColumnInfo(name = "nama_barang") public String namaBarang; @ColumnInfo(name = "merk_barang") public String merkBarang; @ColumnInfo(name = "harga_barang") public String hargaBarang; public int getBarangId() { return barangId; } public void setBarangId(int barangId) { this.barangId = barangId; } public String getNamaBarang() { return namaBarang; } public String getMerkBarang() { return merkBarang; } public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang; } public void setMerkBarang(String merkBarang) { this.merkBarang = merkBarang; } public String getHargaBarang() { return hargaBarang; } public void setHargaBarang(String hargaBarang) { this.hargaBarang = hargaBarang; } }
Bisa dilihat pada codingan di atas class Entity hampir sama bentuknya dengan object Model Java pada umumnya. Class Barang di atas mempunyai atribut, dan juga mempunyai getter dan setter. Bedanya pada class di atas, terdapat annotation @Entity yang diikuti dengan nama tabel. Yup karena pada dasarnya class Entity ini merepresentasikan tabel barang pada database yang akan digunakan untuk menyimpan data barang.
Kemudian atribut-atribut pada entity juga bisa kita define kegunaannya layaknya mendefine nama kolom pada sebuah tabel di database. Atribut barangId di atas kita define sebagai primary key dan atribut namaBarang, merkBarang, dan hargaBarang kita define sebagai nama kolom biasa.
Membuat Data Access Object (DAO) pada Room Database Android
Setelah itu, kita akan membuat interface DAO nya atau Data Access Object. Interface ini berisi daftar method-method yang akan kita pakai untuk mengakses tabel barang di database seperti method insert, read, update, delete, select dan semacamnya.
Buatlah sebuah file .java bernama BarangDAO dan masukkan kode seperti di bawah ini :
BarangDAO.java
package co.twoh.roomtutorial.data; import android.arch.persistence.room.Dao; import co.twoh.roomtutorial.model.Barang; /** * Created by Herdi_WORK on 21.01.18. */ @Dao public interface BarangDAO { // stay tune di next tutorial :D }
Bisa dilihat pada codingan di atas, interface DAO bentuknya seperti interface Java biasa hanya bedanya kita tambahkan annotation @Dao yang merupakan bawaan dari Room Database Library. Untuk isinya akan kita kosongkan terlebih dahulu dan akan dibahas pada tutorial selanjutnya :D.
Jika kita sudah membuat DAO nya. Maka terakhir kita akan membuat class Database Room itu sendiri.
Membuat Abstract Class Database pada Room Android
Class ini semacam gateway satu pintu yang merepresentasikan object Room Database itu sendiri dan berisi daftar dari DAO yang bisa kita akses. Sifatnya adalah abstract, dimana class ini hanya berisi header dari suatu method dan tidak ada body method nya. Kodingannya kira-kira seperti di bawah ini, dengan nama kelas nya adalah AppDatabase.java :
package co.twoh.roomtutorial.data.factory; import android.arch.persistence.room.Database; import android.arch.persistence.room.RoomDatabase; import co.twoh.roomtutorial.data.BarangDAO; import co.twoh.roomtutorial.model.Barang; /** * Created by Herdi_WORK on 21.01.18. */ @Database(entities = {Barang.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract BarangDAO barangDAO(); }
Di situ kita bisa lihat abstract class AppDatabase mempunyai annotation @Database yang juga bawaan dari Room Database itu sendiri. Class AppDatabase meng-extends class RoomDatabase, dan pada annotation @Database di atas kita bisa mendefinisikan database versionnya dan juga entity2 yang akan kita pakai. Karena entity di app ini hanya satu (Barang), maka kita define entities = {Barang.class} seperti di atas.
Isi dari class AppDatabase adalah method untuk mengakses interface BarangDAO() yang sudah kita buat sebelumnya.
Mengakses Room Database
Jika kita sudah membuat tiga komponen utama Room Database library, maka sekarang untuk cara pengaksesannya. Caranya lumayan sederhana, seperti contoh di bawah :
private AppDatabase db; db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "barangdb").build(); db.barangDAO().insertBarang(barang);
Kita hanya perlu meng-instantiate object AppDatabase dengan cara memanggil Room.databaseBuilder. Di sana kita akan memasukkan “barangdb” sebagai nama file database nya. Nama itu sifatnya constant sebagai identitas database, sehingga harus selalu menggunakan nama yang sama setiap kali kita ingin memanggil database tersebut.
Setelah kita mendapatkan object db, kita akan dapat akses ke barangDAO() dan dari situ kita tinggal memilih operasi apa saja yang ingin kita lakukan di database, seperti contoh di atas kita memanggil method insertBarang() pada barangDAO().
That’s all. Simple bukan, untuk tahap pertama ini kalian hanya perlu membuat tiga buah komponen Room Database library seperti di atas. Untuk bagaimana step by step membuat fungsionalitas CRUD nya, akan saya bahas di tutorial selanjutnya.
Semoga berguna, untuk source code-nya, kalian bisa download di GitHub saya. Jangan lupa untuk follow dan star juga ya. 😀
Jangan sungkan untuk bertanya apabila ada yang kurang mengerti, silahkan tulis lewat komentar di bawah. 😉
Maaf kak untuk dependencis dibuaat di Build Gradle(projec) kok tidak bisa kak di Classpath nya error
iya ini nanti sy update