在開(kāi)發(fā)Android應(yīng)用時(shí)碟狞,保存數(shù)據(jù)有這么幾個(gè)方式啄枕,
一個(gè)是本地保存,一個(gè)是放在后臺(tái)(提供API接口)族沃,還有一個(gè)是放在開(kāi)放云服務(wù)上(如?SyncAdapter 會(huì)是一個(gè)不錯(cuò)的選擇)频祝。
對(duì)于第一種方式,即本地?cái)?shù)據(jù)存儲(chǔ)脆淹,如嵌入式SQLite常空,你可以選擇直接使用SQL語(yǔ)句、Content Provider 或 ORM(對(duì)象關(guān)系數(shù)據(jù)映射)盖溺。
對(duì)于 Android 應(yīng)用的開(kāi)發(fā)漓糙,主要是使用Java語(yǔ)言,所以適用于Java語(yǔ)言的一些ORM烘嘱,也能移植于 Android 平臺(tái)上昆禽。
下面是5個(gè)可用ORM的總體介紹:
1.?OrmLite
OrmLite 不是 Android 平臺(tái)專(zhuān)用的ORM框架蝗蛙,它是Java ORM。支持JDBC連接醉鳖,Spring以及Android平臺(tái)捡硅。語(yǔ)法中廣泛使用了注解(Annotation)。
官方網(wǎng)站:http://ormlite.com/sqlite_java_android_orm.shtml
2.?SugarORM
SugarORM 是 Android 平臺(tái)專(zhuān)用ORM盗棵。提供簡(jiǎn)單易學(xué)的APIs壮韭。可以很容易的處理1對(duì)1和1對(duì)多的關(guān)系型數(shù)據(jù)纹因,并通過(guò)3個(gè)函數(shù)save(), delete() 和 find() (或者 findById()) 來(lái)簡(jiǎn)化CRUD基本操作喷屋。
要啟用SugarORM,需要在你的應(yīng)用程序 AndroidManifest.xml 配置中添加如下meta-data標(biāo)簽:
然后就可以從SugarORM擴(kuò)展需要保存的數(shù)據(jù)類(lèi):
public class User extends SugarRecord {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
this.username = username;
this.password = password;
this.age = age;
}
}
要添加一個(gè)User瞭恰,代碼如下:
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
官方網(wǎng)站:http://satyan.github.io/sugar/getting-started.html
3.?GreenDAO
當(dāng)性能很重要時(shí)(數(shù)據(jù)訪(fǎng)問(wèn)頻繁)屯曹,GreenDao是一個(gè)很快的解決方案,它能夠支持?jǐn)?shù)千條記錄的CRUD每秒寄疏,和OrmLite相比是牢,GreenDAO要快幾乎4.5倍。(準(zhǔn)確數(shù)據(jù)請(qǐng)自行benchmark)陕截。
GreenDAO小于100KB驳棱,所以對(duì)于應(yīng)用程序APK的大小影響很小。
這里有一個(gè)教程农曲,演示如何使用Android Studio社搅,在Android應(yīng)用程序中使用GreenDAO框架。
官方網(wǎng)站:http://greendao-orm.com/
4.?Active Android
Active Record(活動(dòng)目錄)是Yii乳规、Rails等框架中對(duì)ORM實(shí)現(xiàn)的典型命名方式形葬。Active Android 幫助你以面向?qū)ο蟮姆绞絹?lái)操作SQLite。
在你的項(xiàng)目中包含Active Android暮的,你需要在項(xiàng)目的 /libs 目錄下添加一個(gè)jar文件笙以。可以從Github中獲取源代碼并使用Maven進(jìn)行編輯冻辩。然后你應(yīng)該添加這些meta-data到你應(yīng)用程序的 AndroidManifest.xml 配置中:
然后在你的Activity中調(diào)用?ActiveAndroid.initialize() 方法:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActiveAndroid.initialize(this);
//rest of the app
}
}
現(xiàn)在猖腕,你可以使用Java注解來(lái)創(chuàng)建模型類(lèi):
@Table(name = "User")
public class User extends Model {
@Column(name = "username")
public String username;
@Column(name = "password")
public String password;
public User() {
super();
}
public User(String username,String password) {
super();
this.username = username;
this.password = password;
}
}
官方網(wǎng)站:http://www.activeandroid.com/
5.?Realm
Realm 是一個(gè)將可以使用的Android ORM,基于C++編寫(xiě)恨闪,直接運(yùn)行在你的設(shè)備硬件上(不需要被解釋?zhuān)┨雀校虼诉\(yùn)行很快。它同時(shí)是開(kāi)源跨平臺(tái)的咙咽,iOS的代碼可以在GitHub找到老玛,你還可以找到Objective-C以及Swift編寫(xiě)的Realm使用實(shí)例。
官方網(wǎng)站:http://realm.io/