Android开发的童鞋应该都知道,使用官方的SQLite数据库,可以满足我们大部分增删改查的需求,然而随着Android技术的逐步成长,你会慢慢发现SQLite越来越不能满足我们的需求。总结为以下主要几点:

  • 1、创表,增删改查需要些大量代码,开发效率极低
  • 2、需大量封装,测试繁琐。
  • 3、效率极低(当你使用了GreenDao||Realm你会发现它完全不能接受)。
  • 4、加密等操作需手动处理。

正因为SQLite的繁琐使用,Andorid也会随着JAVA 的脚步出现大量的ORM框架,类似于JAVA Web的Hibernate

解析主角GreenDao&Realm

以上框架我使用过GreenDao&Realm&ORMLite&Afinal,没使用过的我先暂不评价,最开始我准备通过这4个框架的对比为大家进行分析,然而当我写ORMLite的时候,发现其的ORM封装并没有什么大的作用,唯一让我觉得能夸赞一点的地方,ORMLite他不在需要去写表结构以及SQL语句,我们只需配置实体注解以及调用它的DAO进行数据库操作即可,相对于SQLite也仅仅只是这么点优点,仍然需要写大量的封装代码,这点其实已经很不愿意去使用它了,然而他的性能测试,使我完全放弃使用它,跟GreenDao&Realm完全不在一个层级上的,所以直接推荐大家不使用。至于Afinal,他里面还封装了很多其他的功能,也不是我们优选的数据库框架。

集成方式

  • GreenDao
apply plugin: 'org.greenrobot.greendao'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        implementation'org.greenrobot:greendao-gradle-plugin:3.1.0'
    }
}

dependencies {
    implementation'org.greenrobot:greendao:3.1.0'
}
  • Realm
buildscript {
    repositories {
        maven {
            url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
        }
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:<version>-SNAPSHOT"
    }
}

repositories {
    maven {
        url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
    }
}

数据库操作(增删改查)

通过Demo使用GreenDao&Realm数据库对相同的数据进行1、10、100、1000、10000、100000条数据同时添加、删除、查询(id,name,age3个字段)观察其性能的真实对比,其它条件完全保持一致,仅计算数据库增删改查的时间。
通过记录数据取平均值,记录如下:

1条

添加

删除

查询

GreenDao

6ms

7ms

2ms

Realm

5ms

8ms

1ms

10条

添加

删除

查询

GreenDao

6ms

9ms

2ms

Realm

6ms

11ms

1ms

100条

添加

删除

查询

GreenDao

530ms

11ms

2ms

Realm

15ms

18ms

1ms

1000条

添加

删除

查询

GreenDao

5400ms

10ms

11ms

Realm

68ms

150ms

1ms

10000条

添加

删除

查询

GreenDao

55023ms

13ms

207ms

Realm

800ms

4500ms

4ms

从这张表中体现出的现象:
在小量数据的查询与删除等操作中,两者的差距基本可以忽略不计,早超过同时插入、删除、查询1000条以上的数据分析得出。GreenDao在删除操作中,占明显优势,而Realm在添加与查询方面优于GreenDAO。

个人推荐

由于GreenDao在3.0.1后的使用极其方便,并且使用的习惯与拓展性、稳定性优于Realm,推荐使用GreenDao.
如果你的项目中对添加与查询操作要求极高的话,推荐使用Realm,但它目前相对不稳定,官方也在持续优化中,需留意官网并实时替换新版本。

  • 下边是1000条数据demo测试图