Android CRUD Realm Database

Hi Gaes, kali ini kita akan belajar CRUD sederhana menggunakan database Realm di android, yang saya gunakan sebagai pengganti SQLite dalam membuat aplikasi android yang berhubungan dengan database.

Baik, yang pertama adalah mengedit build.gradle untuk menambahkan Realm itu sendiri. Dan pastikan mempunyai koneksi internet.

android {

    ...
    
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    //Optional
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    //Tambahkan ini dan gunakan versi terbaru
    compile 'io.realm:realm-android:0.82.0'
}

Setelah menambahkan dependency, selanjutnya kita membuat konfigurasi default Realm ke dalam class yang mengextends Application.

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        RealmConfiguration config = new RealmConfiguration.Builder(this).build();
        Realm.setDefaultConfiguration(config);
    }
}

Serta pada AndroidManifest.xml tambahkan class yang mengextends Application tersebut, seperti dibawah ini :

    ...

    <application
        android:name=".app.App"
        ... >

        ...

    </application>

    ...

Selanjutnya, disini saya membuat class Article sebagai Realm data models dengan mengextends RealmObject, dan juga saya menggunakan id sebagai PrimaryKey-nya.

public class Article extends RealmObject {
    @PrimaryKey
    private String id;
    private String title;
    private String description;

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

Setelah membuat class-class yang diperlukan di atas, sekarang kita akan membuat CRUD-nya. Sebelumnya tambahkan baris dibawah ini ke dalam onCreate() nya Activity atau Fragment anda :

    private Realm realm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ...

        realm = Realm.getDefaultInstance();

        ...
    }
  • Menambahkan data Article :
    private void addArticle(String title, String description) {
        realm.beginTransaction();

        Article article = realm.createObject(Article.class);
        article.setId(Utils.getCurrentTimestamp());
        article.setTitle(title);
        article.setDescription(description);
        articleAdapter.add(article);

        realm.commitTransaction();

        showToast("Added : " + title);
    }
  • Menampilkan semua data Artikel :
    private void findAllArticle() {
        realmResults = realm.where(Article.class).findAll();
        realmResults.sort("id", RealmResults.SORT_ORDER_DESCENDING);
        articleAdapter.addAll(realmResults);

        showToast("Size : " + String.valueOf(realmResults.size()));
    }
  • Mengupdate data Article :
    private void updateArticle(String id, String title, String description) {
        realm.beginTransaction();

        Article article = realm.where(Article.class).equalTo("id", id).findFirst();
        article.setTitle(title);
        article.setDescription(description);
        articleAdapter.update();

        realm.commitTransaction();

        showToast("Updated : " + id);
    }
  • Menghapus data Article :
    private void deleteArticle(int position) {
        realm.beginTransaction();

        realmResults.remove(position);
        articleAdapter.remove(position);

        realm.commitTransaction();

        showToast("Deleted position : " + position);
    }

Pada potongan kode diatas terdapat articleAdapter, disitu saya menggunakan RecyclerView Adapter untuk memberitahukan ke adapter notifyDataSetChanged() setiap menghapus, mengedit, menambah ataupun menampilkan.

Yang selalu diingat, setiap kali kita akan menambahkan, mengedit atau menghapus data selalu gunakan :

//dimulai dengan
realm.beginTransaction();

...

//ditutup dengan
realm.commitTransaction();

Atau jika sedang malas atau lupa atau yang lainnya untuk membuka / menutup, kita juga dapat menggunakan :

realm.executeTransaction(new Realm.Transaction() {
	@Override
	public void execute(Realm realm) {

		...

	}
});

Sekarang tinggal kita jalankan aplikasinya. Untuk hasilnya bisa dilihat pada video diatas.

Nah, selesai sudah tutorial CRUD menggunakan Realm Database kali ini. Ternyata sangat simpel, cepat dan sederhana sekali ya? Dan yang bikin saya ginjal-ginjal disini melakukan query tanpa syntax SQL itu bagaikan SurgoDunyo . 😀

Semoga bermanfaat 🙂

10 Comments

Add yours →

  1. mas,koq saya error di articleAdd sama realmResult ya?

  2. Nice share mas hehe
    tapi bisa upload source code nya ga mas? thanks

  3. What is article adapter here?

  4. kyaw zin oo

    30/12/2015 — 12:19

    please show articleAdapter

  5. Hello mas, terima kasih kerana mengkongsi ilmu Realm on Android. Tapi adakah ia satu idea yang bagus untuk letak PrimaryKey sebagai timestamp, dan bukan incremental integer? Karena mungkin di masa hadapan kita memerlukan sesuatu data, tapi gak tahu tentang timestamp nya.

  6. Terima kasih gan, ane coba dulu tutor database realmnya 😀

  7. mas articleAdapter itu object apa ya mas?

  8. Mas, bisa lihat xml buat form nya?

  9. Thank gan udah share banyak tutorial buat android.
    Numpang share gan. Ane buat aplikasi android buat Belajar Matematika SD (saat ini masih untuk kelas III). Soal-soal banyak dan ada kunci jawabannya. Mungkin bisa ditesting dan berguna gan. Bisa dicek di google playstore di link : https://play.google.com/store/apps/details?id=fahim_edu.matematikasd
    Terimakasih gan

Leave a Reply