在開發Android應用時,保存數據有這么幾個方式,一個是本地保存,一個是放在后台(提供API接口),還有一個是放在開放雲服務上。
對於第一種方式,即本地數據存儲,我們可以選擇直接使用SQL語句、Content Provider 或 ORM(對象關系數據映射)。
下面是在Android平台上的5個可用ORM的相關介紹:
1. ORMLite
ORMLite 不是 Android 平台專用的ORM框架,它是Java ORM。支持JDBC連接,Spring以及Android平台。語法中廣泛使用了注解(Annotation)。
官方網站:http://ormlite.com/sqlite_java_android_orm.shtml
2. SugarORM
SugarORM 是 Android 平台專用ORM。提供簡單易學的APIs。可以很容易的處理1對1和1對多的關系型數據,並通過3個函數save(), delete() 和 find() (或者 findById()) 來簡化CRUD基本操作。
要啟用SugarORM,需要在你的應用程序 AndroidManifest.xml 配置中添加如下meta-data標簽:
<meta-data android:name="DATABASE" android:value="my_database.db" /> <meta-data android:name="VERSION" android:value="1" /> <meta-data android:name="QUERY_LOG" android:value="true" /> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" />
然后就可以從SugarORM擴展需要保存的數據類:
public class User extends SugarRecord<User> { 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; } }
要添加一個User,代碼如下:
User johndoe = new User(getContext(),"john.doe","secret",19); johndoe.save(); //stores the new user into the database
官方網站:http://satyan.github.io/sugar/getting-started.html
3. GreenDAO
當性能很重要時(數據訪問頻繁),GreenDao是一個很快的解決方案,它能夠支持數千條記錄的CRUD每秒,和OrmLite相比,GreenDAO要快幾乎4.5倍。(准確數據請自行benchmark)。
GreenDAO小於100KB,所以對於應用程序APK的大小影響很小。
4. Active Android
Active Record(活動目錄)是Yii、Rails等框架中對ORM實現的典型命名方式。Active Android 幫助你以面向對象的方式來操作SQLite。
在你的項目中包含Active Android,你需要在項目的 /libs 目錄下添加一個jar文件。可以從Github中獲取源代碼並使用Maven進行編輯。然后你應該添加這些meta-data到你應用程序的 AndroidManifest.xml 配置中:
<meta-data android:name="AA_DB_NAME" android:value="my_database.db" /> <meta-data android:name="AA_DB_VERSION" android:value="1" />
然后在你的Activity中調用 ActiveAndroid.initialize() 方法:
public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActiveAndroid.initialize(this); //rest of the app } }
現在,你可以使用Java注解來創建模型類:
@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; } }
官方網站:http://www.activeandroid.com/
5. Realm
Realm 是一個將可以使用的Android ORM,基於C++編寫,直接運行在你的設備硬件上(不需要被解釋),因此運行很快。
它同時是開源跨平台的,iOS的代碼可以在GitHub找到,你還可以找到Objective-C以及Swift編寫的Realm使用實例。
官方網站:http://realm.io/