Android ORM框架選擇的一些總結(jié)

為什么要用ORM

一般情況下,當預(yù)料到數(shù)據(jù)庫會復(fù)雜到某個程度,就有必要引入數(shù)據(jù)庫的ORM框架,這樣可以大大降低開發(fā)和維護的成本。當然,站在巨人的肩膀上,選擇好的開源庫更可以事半功倍。

選擇怎么樣的ORM

Android上的ORM框架不少:GreenDao, Active Android,Schematic,Ollie,Sprinkles...到底應(yīng)該如何選擇?

先上性能對比(http://greenrobot.org/android/android-orm-performance-2016/):

這些ORM框架用到的實現(xiàn)方式主要有幾種:
1.注解(運行時 Annotation,編譯時 Annotation)
2.反射
3.直接生成代碼
這里簡單地直接說結(jié)論:
通過運行時注解反射去建立數(shù)據(jù)表和實體的關(guān)系會導(dǎo)致性能比較低
性能角度出發(fā),應(yīng)該選擇使用編譯時注解代碼生成的框架。
當然,成熟程度,文檔資料等也是考量點。

推薦的選擇(以性能為基本要求)

greenDAO

1.相關(guān)代碼通過另一個普通的Java項目直接生成,不會導(dǎo)致性能瓶頸。
2.功能特性相當完善,版本穩(wěn)定,greenrobot 2011開始的項目。
3.文檔較完善,使用者較多。
注意:
1.數(shù)據(jù)庫版本升級和數(shù)據(jù)遷移:官方?jīng)]有提供完善的解決方案,但可以參考stackoverflow上相關(guān)的討論(關(guān)鍵字:greendao schema)。
2.尚未正式支持集成SQLCipher加密,但是已有解決方案:https://github.com/greenrobot/greenDAO/issues/6
3.Content Provider Generation尚未正式完成:https://github.com/greenrobot/greenDAO/issues/111
重要更新:
1.正式支持SQLCipher 加密。
2.greenDao V3.X 開始使用 編譯時注解 + Gradle Plugin 去生成實體和框架代碼。
3.開始支持RxJava,但是不支持RxJava2(https://github.com/greenrobot/greenDAO/issues/520)

DBFlow

1.相關(guān)代碼通過編譯時注解生成,不會導(dǎo)致性能瓶頸。
2.功能特性比較豐富。
3.文檔較完善。
4.數(shù)據(jù)庫版本升級和數(shù)據(jù)遷移-有較簡便的解決方案。
5.支持集成SQLCipher加密。
6.支持Content Provider Generation。
注意:
1.項目的版本尚未穩(wěn)定,使用者不多

趨勢

NoSQL/對象型數(shù)據(jù)庫

NoSQL是趨勢。其實對關(guān)系型數(shù)據(jù)庫引入ORM,就是實現(xiàn)了對象型數(shù)據(jù)庫要做的事情。

Realm

ObjectBox

速度方面碾壓SQLite,非常值得關(guān)注!!!

image.png

以上是一些簡單的思考總結(jié),歡迎交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容