技術學習記錄

[Android]Realm資料庫學習筆記

簡介

Realm是一款手機的資料庫套件,支援Android、iOS系統。

Realm和以往的ORM不同,Realm使用了自有的引擎取代SQLite。

Realm的特色

  • 簡潔:以往我們在使用SQLite的時候,常常需要建立SQLiteOpenHelper類別,並實作一系列CRUD(新增、刪除、修改、查詢)的方法。而Reaml提供了一系列的方法供開發者使用,因此無需再自行實作一系列的方法,而且提供的方法非常簡單且強大,讓程式碼可以更簡潔。
  • 速度快:Realm使用自家資料庫引擎,核心基於C++編寫。由於他是重新開發的資料庫實現,因此和現有的SQLite相比,速度較快。
  • 支援JSON:Realm支援JSON格式,因此我們可以不需要建立Model類別,直接從JSON格式設定資料。
  • 響應式程式設計:Realm可以支援觀察資料庫中的變更,然後更新UI畫面。也可以和RxJava一起使用。

在Android使用Realm

1.在專案根目錄的build.gradle中加入realm的路徑,如下所示:

dependencies {
    classpath "io.realm:realm-gradle-plugin:1.0.0"
    ----以下省略----
}

2.在app目錄的build.gradle加入realm的plugin,如下所示

apply plugin: 'realm-android'

3.在Application類別,初始化Realm資料庫,如下所示

// 初始化 Realm 資料庫
Realm.init(this)
// 建立資料庫參數設定
val config = RealmConfiguration.Builder().name("myDatabase.db").build()

Realm.setDefaultConfiguration(config)

4.建立Realm資料模型類別,如下所示

open class MyDataModel : RealmObject() {
    @PrimaryKey
    var id: Int = 0
    var name: String = ""
    var telephone: String = ""
    var email: String = ""
}

到目前為止,將Realm導入到Android專案的步驟已經完成,以下是簡單的操作示範:


1.查詢資料:

val realm = Realm.getDefaultInstance()
val query = realm.where(MyDataModel::class.java)
val result = query.findAll()

2.新增資料:

val realm = Realm.getDefaultInstance()

realm.executeTransaction { r ->
    val data = r.createObject(MyDataModel::class.java, getMaxID())
    data.name = "ABC"
    data.telephone = "1234567890"
    data.email = "[email protected]"
}

realm.close()

3.刪除資料:

val realm = Realm.getDefaultInstance()
val query = realm.where(MyDataModel::class.java)
val result = query.findAll()

realm.beginTransaction()

val data = result[position]
data?.deleteFromRealm()

realm.commitTransaction()

結尾

以上是Realm資料庫的導入及基本操作方式。

這裡附上一些參考資料:

Realm官網

Android third-party使用心得

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *