安卓數據庫開源框架 litepal 與greenDao之間比較

這篇文章兩個目的一個是爲了android開發使用開源數據庫框架有個選擇標準,一個是郭神的第一行代碼中litepal在update時候有點小瑕疵,簡單說明一下

後端開發時可能會用到SSH/SSM框架進行開發,其中Hibernate與Mybatis就是對數據庫的處理,進行實體類與數據庫表的對應,往往用代碼生成器生進行二次封裝,方便對數據庫進行調用;
安卓原生的數據庫處理api記憶量大,調用複雜,自己封裝後使用也不如Hibernate或者Mybatis使用方便,gitHub出現了多種對應安卓數據庫處理框架,選其中最流行的兩種litepal與greenDao進行對比分析,方便項目使用時進行選擇;

LitePal

litepal是一個sinyu890807與郭神一起開發的,郭神也一直維護,最近一直更新;在郭神的第二行代碼中對update
的描述有點問題,在這裏簡單的說明一下:

第一行代碼的update的第一種更新方法:

圖片描述
圖片描述

正確的update應該是litepal的說明文檔:鏈接描述

Album albumToUpdate = LitePal.find(Album.class, 1);
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.save();
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.update(id);

以上兩種更新是按照id進行更新;

Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "album");

這個是按照條件進行更新;
經過實測,以上三種更新方法沒有問題;

簡單的啓動說明爲了方便查看(CHM格式)

litepal的進階

litepal 2.0

GreenDao

greendao是德國的一個實驗室開發的,eventbus也是他們做的,還做安卓物聯網的數據庫的第三方,因爲不是個人開發,所以文檔全也有專門的網站.

Android GreenDao使用教程

greendao的封裝

查看數據庫

android查看數據庫比較繁瑣,需要把數據庫從手機裏拽出來,用sqliteStudio或者其他軟件進行查看,或者用命令行工具.
替代方法有兩種,一種是facebook的stetho:需要翻牆才能使用;另一是Android-Debug-Database:沒有試過,有興趣可嘗試,

facebook stetho使用說明

數據庫調試 Android-Debug-Database使用說明

litepal與greenDao比較

  • greenDao的使用更像Hibernate,從master到session到Dao,命名基本都一致;litepal看不出來(有時間進一步看源碼);
  • 兩者都需要自己編寫實體類,litepal直接使用xml進行配置數據庫,而greenDao需要用插件生成,

greenDao啓動的使用不是很方便,需要自己進行簡單的封裝,多表查詢也需要封裝;

  • litepal的數據庫升級不會抹掉原來的數據,而greenDao會,而數據庫升級不擦除原來的數據需要使用數據庫升級輔助GreenDaoUpgradeHelper

'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.2.0'進行依賴,如果額外的學習成本;

  • greenDao的查詢有懶加載,可以更好的優化內存,litepal沒有;
  • greenDao使用異步插入或者查詢的時候是用rxjava開子線程的,而litepal用線程加接口回調實現,簡單看rxjava的源碼,greenDao的考慮多線程會多一些;
  • 總的來說:greenDao的使用會比litepal會更復雜一些(如多表對應,左右連接,多線程,內存性能優化)更像服務器的hiberate/mybatis框架,如果app有大量數據的數據表與複雜的數據處理,或者考慮擴展性,可以使用greenDao;
    而litepal的使用更輕便,而且數據庫升級做的不錯,也有多線程;

可以根據開源框架不同的特點與app對數據的需求進行選擇開源框架;

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