當前位置:
首頁 > 最新 > Android ORM 框架:GreenDao 使用詳解

Android ORM 框架:GreenDao 使用詳解

一、GreenDao 簡介

GreenDAO 是一款開源的面向 Android 的輕便、快捷的 ORM 框架,將 Java 對象映射到 SQLite 資料庫中,我們操作資料庫的時候,不在需要編寫複雜的 SQL語句, 在性能方面,GreenDAO 針對 android 進行了高度優化, 最小的內存開銷 、依賴體積小 同時還是支持資料庫加密。

GreenDAO 官網地址:http://greenrobot.org/greendao/

二、GreenDao 特徵:

1、對象映射( ORM)

GreenDAO 是ORM 框架,可以非常便捷的將Java 對象映射到 SQLite 資料庫中保存。

2、高性能

ORM 框架有很多,比較著名的有 OrmLite , ActiveAndroid , Realm 等,性能也不一樣,下圖是 GreenDao 官方給出的性能對比。

3、支持加密

GreenDao 是支持加密的,可以安全的保存用戶數據。

4、輕量級

GreenDao 核心庫小於100k ,所以我們並不會擔心添加 GreenDao 後 APK 大小會變的是否龐大。

5、支持 protocol buffer(protobuf) 協議

GreenDao 支持 protocol buffer(protobuf) 協議數據的直接存儲,如果你通過 protobuf 協議與伺服器交互,將不需要任何的映射。

6,代碼生成

greenDAO 會根據配置信息自動生成核心管理類以及 DAO 對象

7,開源

greenDAO 是開源的,我們可以在github 上下載源碼,學習。github 地址:https://github.com/greenrobot/greenDAO

三、核心類介紹

DaoMaster:

使用 greenDAO 的入口點。DaoMaster 負責管理資料庫對象(SQLiteDatabase)和 DAO 類(對象),我們可以通過它內部類 OpenHelper 和 DevOpenHelper SQLiteOpenHelper 創建不同模式的 SQLite 資料庫。

DaoSession :

管理指定模式下的所有 DAO 對象,DaoSession提供了一些通用的持久性方法比如插入、負載、更新、更新和刪除實體。

XxxDAO :

每個實體類 greenDAO 多會生成一個與之對應DAO對象,如:User 實體,則會生成一個一個UserDao 類

Entities

可持久化對象。通常, 實體對象代表一個資料庫行使用標準 Java 屬性(如一個POJO 或 JavaBean )。

核心類之間的關係

四、 集成 GreenDAO

a、設置倉庫與插件(Project: build.gradle)

b、 配置依賴 ( Module:app build.gradle )

c、 配置資料庫相關信息 ( Module:app build.gradle )

d、點擊 : Sync Project with Gradle Files 按鈕,同步一下工程 , 配置完成

五、快速入門

1, 我們寫一個簡單的實體類(User),測試一下

2、點擊 Make Project(或者 Make Moudle 『App』) 編譯一下工程 。如果配置正確,會在配置的包目錄下自動會生成 DaoMaster,DaoSession 和 UserDao 類 。

3,初始化 GreenDao ( 通常初始化代碼寫在我們的 Application 類中)

4,獲取 UserDao

5, 保存記錄

5, 刪除記錄

或者

6,更新記錄

7,查詢記錄

六、註解詳解

@Entity

表明這個實體類會在資料庫中生成一個與之相對應的表

屬性:

schema:告知GreenDao當前實體屬於哪個 schema

schema active:標記一個實體處於活躍狀態,活動實體有更新、刪除和刷新方法

nameInDb:在資料庫中使用的別名,默認使用的是實體的類名,

indexes:定義索引,可以跨越多個列

createInDb:標記創建資料庫表(默認:true)

generateConstructors 自動創建全參構造方法(同時會生成一個無參構造方法)(默認:true)

generateGettersSetters 自動生成 getters and setters 方法(默認:true)

@Id

對應數據表中的 Id 欄位

@Index

使用@Index作為一個屬性來創建一個索引,默認是使用欄位名

@Property

設置一個非默認關係映射所對應的列名,默認是使用欄位名,例如:@Property(nameInDb = 「userName」)

@NotNull

設置資料庫表當前列不能為空

@Transient

添加此標記後不會生成資料庫表的列

@Unique

表名該屬性在資料庫中只能有唯一值

@ToOne

表示一對一關係

@OrderBy

更加某一欄位排序 ,例如:@OrderBy(「date ASC」)

@ToMany

定義一對多個實體對象的關係

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Android之旅 的精彩文章:

TAG:Android之旅 |

您可能感興趣

MPAndroidChart LineChart使用
AI 框架使用排行:TensorFlow、Scikit Learn、IBM Watson、Spark-MLib、Keras
使用 YAML 文件創建 Kubernetes Deployment
Spring Boot與Kotlin 使用MongoDB資料庫
macOS Sierra:在Mac 上使用 Touch ID Use Touch ID on your Mac
Android為什麼推薦使用SparseArray來替代HashMap?
使用 Python的urlliib.parse 庫解析 URL
CodeWarrior IDE使用Tips-使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解
Use of the Apnea Monitor使用窒息監視器
如何使用TensorFlow中的Dataset API
安卓 P-ify Xposed模塊讓安卓Oreo使用Android P功能
一文詳解如何使用Python和Keras構建屬於你的AlphaZero AI
Spring Boot使用——Allatori代碼混淆
一文詳解如何使用Python和Keras構建屬於你的「AlphaZero AI」
使用Tensorflow Object Detection API實現對象檢測
使用BurpSuite的Collaborator查找.Onion隱藏服務的真實IP地址
springboot:使用Spring Boot Actuator監控應用
谷歌 Google Home Mini 智能音箱使用體驗報告Soomal
初代 Apple TV 和 Windows XP/Vista 將無法繼續使用 iTunes Store
初代 Apple TV 和 Windows XP/Vista 將無法繼續使用 iTunes Store