Android中使用OrmLite持久化的詳細介紹 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

相信大傢應該都知道,在Android系統中,保存數據的方法多種,但應該可以一起概括為四種方式:

•        Preferences

•        Files

•        Databases

•        Network

今天我們來看看Databases這種方式。在Android系統中內置瞭一款輕量級數據庫sqlite,關於它的介紹相信網上一定多得數不清,所以我這裡就不廢話瞭。

因為有些朋友不熟悉SQL語句,或者說不想寫,再或者說怎麼寫都不對,這裡就引出瞭今天我要介紹的OrmLite:Object Relational Mapping Lite (ORM Lite)。

OrmLite提供瞭一些輕量級持久化Java對象到SQL數據庫,同時也避免瞭復雜性和更多的標準的ORM包的開銷功能。它支持的SQL數據庫使用JDBC的數量,還支持原生的Andr​​oid操作系統數據庫API調用sqlite。首先我們要使用它呢,就要去它的官方http://ormlite.com下載你想要的版本,這裡我下載瞭最新的4.30。接下來我們來寫一個簡單的項目,同時對它的使用方法進行一個詳細的介紹。

 

建立好項目後呢,我們加入OrmLite的jar包,然後建立兩個實體類,我用的例子是客戶和訂單,一個客戶對應多個訂單這樣的關系。

 

 

接著為這兩個實體類添加屬性和字段,需要註意的是,一定要有一個無參的構造函數,OrmLite創建對象時需要使用。

Account:int aId,String aName;Order:int oid,String oName,Account account。

接著就到瞭添加ORMLite註解瞭。註解是特殊的代碼標志已在Java版本開始,要指定什麼類和字段存儲在數據庫中,ORMLite支持其自己的註解(@ DatabaseTable @ DatabaseField)或更多的標準註解從javax.persistence包。註解是最簡單的方法來配置你的類,但你也可以使用Java代碼或Spring的XML配置類 。以下是註解的詳細介紹:

@ DatabaseTable註解可以有一個可選的TableName的參數指定類對應的表的名稱。如果沒有指定表名的情況下,默認情況下使用類名作為對應的表名。例如:

@DatabaseTable(tableName = "accounts")

public class Account {…}    像這樣的話,Account類對應的表名就是accounts,如果不指定則為account。

 

@ DatabaseField註解可以有以下字段:

columnName 列名,未指定時為字段名

dataType DataType類的類型的字段。通常的類型是從Java類的領域,並不需要指定。

defaultValue 默認值

width 寬度 默認是0,表示不限

canBeNull 是否允許為空,默認為true

id 主鍵 默認為false

generatedId 自增長的主鍵 默認值是false

generatedIdSequence 字符串名稱的序列號 類同generatedId,但您可以指定序列的名稱使用。默認為null

foreign 外鍵,默認為false,字段不能是一個原始類型。在外鍵對象的類中,必須要有一個ID字段(ID,generatedId,generatedIdSequence)

useGetSet 應用get和set方法訪問。默認為false

unknownEnumName 表示該字段是一個Java的枚舉類型

throwIfNull 如果為空值,拋出一個異常 默認為false

persisted 是否在數據庫中存儲這個領域 默認為true

format 指定某一特定領域的信息格式,如指定日期字符串的格式

unique 唯一約束,默認為false

uniqueCombo 唯一行,該行內所有字段成為一個唯一約束,如有firstName 和lastName兩個字段,為"張"和"梅",那麼該表內不可再插             入"張","梅",   但你可插入"張","全梅"。

index 是否建立索引 默認為false

uniqueIndex 唯一索引 默認為false

indexName 為這一領域的索引添加一個名字

uniqueIndexName 為這一領域的索引添加一個唯一的名字

foreignAutoRefresh 當查詢到一個外鍵對象時,是否自動刷新 如Order表中有Account外鍵對象,當返回Order的記錄時是否也返回Account的記錄,           默認為false

maxForeignAutoRefreshLevel 為瞭防止無限遞歸或者無限循環時 需要用到該屬性設置自動刷新的最高級別

allowGeneratedIdInsert 插入一個ID字段是否覆蓋它生成的ID的對象 默認為false

columnDefinition 定義列,默認情況下,數據庫類型是用於自動生成所需的SQL來創建列,所以該屬性並不常用

foreignAutoCreate 在插入一個有外鍵對象的對象時,是否自動插入這個外鍵對象

version 行版本 當一個對象被更新,以防止數據損壞多個實體時更新在同一時間進行的保護

 

以上資料出處:http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite.html#SEC_Top

發佈留言