簡介
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資料庫的導入及基本操作方式。
這裡附上一些參考資料: