greenDAO與Realm的探索

最近項目中要用到數據庫相關的知識,就在網上查了下Android平臺上的數據庫框架,目前比較熱門有GreenDAO和Realm,這兩個都是使用者都比較多,並且都在持續發佈更新,就對這兩個框架進行了一些探索。

兩者的官網和github鏈接:
GreenDAO:
http://greenrobot.org/greendao/
https://github.com/greenrobot/greenDAO

Realm:
https://realm.io/cn/
https://github.com/realm/realm-java

簡單介紹

GreenDAO

greenDao是一款Android平臺上的開源框架,提供將對象映射到SQLite數據庫中的輕量且快速的ORM解決方案。greenDAO對安卓進行了高度優化,提供了出色的性能和最小的內存消耗。它減輕開發人員處理低級數據庫需求,同時節省開發時間,使SQLite數據庫的開發變得有趣。

SQLite是一個令人敬畏的嵌入式關係數據庫。不過,編寫SQL和解析查詢結果是相當乏味和耗時的任務。greenDAO通過將Java對象映射到數據庫表(稱爲ORM ,對象關係映射)將您從其中解脫出來。通過簡單的面向對象API,你就可以來存儲,更新,刪除和查詢Java對象。

功能一覽:

高性能(可能是Android最快的ORM):開源的基準
易用:功能強大的API涵蓋關係和聯接
最小的內存消耗
精簡的庫(<100KB):維持較少的編譯時間,並避免65k方法數量的限制
數據庫加密:greenDAO支持SQLCipher,以保護用戶的數據安全
強大的社區:GitHub上超過5000個Star(現在已經超過8000了)表明有一個強大和積極的社區

Realm

Realm是一款可直接運行在手機,平板電腦或可穿戴設備上的移動數據庫。Realm 移動端數據庫快速、易用、開源且完全免費,深受開發者和億萬用戶喜愛。Realm 是 SQLite 和 Core Data 的替代者,得益於其零拷貝的設計,Realm 比任何 ORM 都要快很多。Realm簡單、快速,節約數週的開發時間。幾分鐘內就能學會使用 Realm。

功能一覽:

離線優先:即使在離線狀態下應用也可正常工作
查詢快速:複雜查詢也只需要幾納秒,查詢結果與新數據實時同步
線程安全:多線程訪問同一數據毫無問題
跨平臺支持:多個平臺不同應用使用同一數據庫
加密:無需額外代碼,就能保證你的數據安全
響應式架構:讓Realm連接到UI,及時將數據更新反饋給用戶

使用方法

我比較懶,貼一下別的博主的博客好了。

GreenDao3.0簡單使用

這裏需要說明的是,greenDAO在github上說

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}

// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
}

這裏的root應該是project級的,app project是module級的


我看很多文章裏都沒搞對。

Realm For Android詳細教程

後面有時間的話自己再總結吧

速度對比

這裏使用的版本是

greenDAO 3.2.2
Realm 3.1.1

速度在不同機型上不同的使用方法肯定會有偏差,這裏僅作參考,但還是可以看出Realm在速度上的優勢。

GreenDAO(1條) 10ms 17ms 12ms
Realm(1條) 5ms 6ms 7ms
GreenDAO(10條) 47ms 55ms 100ms
Realm(10條) 6ms 11ms 8ms
GreenDAO(100條) 402ms 377ms 398ms
Realm(100條) 10ms 20ms 16ms
GreenDAO(1000條) 3959ms 3326ms 3297ms
Realm(1000條) 28ms 71ms 94ms

END

框架的選擇應該結合項目的需求,對比功能,穩定性,拓展性,易用性等多個方面。我也只是個小白,提不了什麼有價值的建議。

最後貼上自己的代碼,我只進行了最簡單的使用:
https://github.com/xiaoniu/Database
需要的可以參考一下,有問題可以評論一下,歡迎探討。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章