快速开发之Android Orm总结

概述

在android平台上,常用的数据保存方式有Preference,文件和数据库,针对于数据库操作,
一般都会采用orm框架来解决问题,Android中使用比较广泛的Orm有LiteOrm,OrmLite,SugarORM,GreenDAO,ActiveAndroid,Realm等

AndroidOrm使用的小demo:AndroidOrm

LiteOrm

这款和OrmLite不是一个东西,项目地址:https://github.com/litesuits/android-lite-orm,是一个专注于数据库操作的Orm

提供了非常方便的 级联操作单独操作 切换,LiteOrm对象 需要保持全局单例, 其提供了非常丰富的注解(Annotation)

CRUD操作也十分方便,应对数据库的升级也不需要做任何操作.只需修改Model即可,因为LiteOrm自动探测技术

详细使用:Android 快速开发系列之数据库篇(LiteOrm

和其他Orm的对比:Android数据库框架:greenDAO vs LiteOrm

OrmLite

OrmLite是java平台的Orm框架,可以在任何使用Java的地方,支持JDBC,Spring等,用到了很多注解 (Annotation),
官网地址http://ormlite.com/

启用方式: 第一步,编写JavaBean

@DatabaseTable(tableName = "users")
public class User {
    @DatabaseField(id = true)
    private String username;
    @DatabaseField
    private String password;

    public User() {
        // ORMLite needs a no-arg constructor
    }
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    // Implementing getter and setter methods
}

第二步: 编写DatabaseHelper,继承OrmLiteSqliteOpenHelper,具体查看Sample,也十分简单

第三步: 通过helper.getUserDao()来进行CRUD操作

create(user),deleteById(id),update(user),queryForAll()等.

详细使用:Android 数据库框架ormlite 使用精要

SugarORM

SugarORM是android 专用orm,提供save(), delete() 和 find()/findById()方法,官网地址:https://github.com/satyan/sugar

启用方式:第一步:配置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" />

第二步: JavaBean,需要继承SugarRecord,或者使用@Table注解

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;
    }
}

CRUD: 通过save(), delete() 和 find()方法完成
其中update操作.

Book book = Book.findById(Book.class, 1);
book.title = "updated title here"; // modify the values
book.edition = "3rd edition";
book.save(); // updates the previous entry with new values.

上手很简单,更多用法参考官方文档:http://satyan.github.io/sugar/getting-started.html

GreenDAO

GreenDAO 号称Android上最快的orm框架,每秒数千条记录。官网地址:http://greenrobot.org/greendao/

作为一款老字号的Orm框架,网上的介绍也比较多了,需要建立Java工程来生成DAO、Master、Session 等对象
如果数据库升级,需要重新创建DaoGenerator,来生成代码.

其后的CRUD操作都是依赖于Dao来完成.和其他Orm没有本质的区别.

详细使用见官方文档:http://greenrobot.org/greendao/documentation/

ActiveAndroid

ActiveAndroid项目地址:https://github.com/pardom/ActiveAndroid

使用ActiveAndroid,需要在AndroidManifest中添加meta信息,用注解生成模型

<meta-data android:name="AA_DB_NAME" android:value="my_database.db" />
<meta-data android:name="AA_DB_VERSION" android:value="1" />

然后需要在Application中使用 ActiveAndroid.initialize(this);初始化

public class MyApplication extends SomeLibraryApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        ActiveAndroid.initialize(this);
    }
}

CRUD:
通过类Select(查询),Delete(删),bean.save()增改,其wiki介绍也十分详细

Realm

一个不依赖于SqlLite的ORM库,底层使用c++ 实现的,是最新流行的Orm框架,而且是跨平台的.官网地址:https://realm.io

启用步骤:第一步,使用gradle来引入realm-android
第二步,新建JavaBean实现RealmModel接口.
第三步,CRUD操作,官网介绍也十分详细.

普通操作:

// Obtain a Realm instance
Realm realm = Realm.getDefaultInstance();

realm.beginTransaction();

//... add or update objects here ...
User user = realm.createObject(User.class);

realm.commitTransaction();
//or cancel
//realm.cancelTransaction();

relam支持链式查询和Auto-Updating Results

RealmResults<User> teenagers = realm.where(User.class).between("age", 13, 20).findAll();
User firstJohn = teenagers.where().equalTo("name", "John").findFirst();

需要注意的是,在使用完毕后需要关闭 Realm 实例。

public class MyThread extends Thread {

    private Realm realm;

    public void run() {
        Looper.prepare();
        try {
            realm = Realm.getDefaultInstance();
            //... Setup the handlers using the Realm instance ...
            Lopper.loop();
        } finally {
            if (realm != null) {
                realm.close();
            }
        }
    }
}

使用Relam还有一个好处就是可以结合当下比较流行的Rxjava和Retrofit来使用,
其原生提供了很好的支持,截止目前已经出了1.0.0版本,但是仍有诸多限制,及JavaBean的不自由.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值