关闭

Android数据库框架GreenDao&Realm实战分析

标签: 数据库greendaorealmsqlliteormlite
7412人阅读 评论(10) 收藏 举报
分类:

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

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

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

目前流行的Andorid数据库框架

下面先列出目前流行的常见ORM框架:ORMLite、Afinal、ActiveAndroid、SugarORM、GreenDao、Realm
下面给出他们对应的仓库地址,从地址热度、star、更新时间,你也基本能判断出他们目前的流行程度与使用人数。
ORMLite:https://github.com/j256/ormlite-android
Afinal:https://github.com/yangfuhai/afinal
ActiviteAndroid:https://github.com/pardom/ActiveAndroid
SugarORM:Android 平台专用ORM
GreenDao:https://github.com/greenrobot/greenDAO
Realm:https://github.com/realm/realm-java

解析主角GreenDao&Realm

背景

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

接下来轮到GreenDao&Realm登场,他们的实用性与性能如何,我们拿真实数据说话。网络对他们的资料介绍非常模糊,并且参差不齐。
下面我们逐步进行PK

1、开发环境需求

GreenDao: Android Studio即可。
Realm:
来自官方
Make sure make is available in your $PATH
Download the JDK 7 or JDK 8 from Oracle and install it.
Download & install the Android SDK Build-Tools 24.0.0, Android N (API 24) (for example through Android Studio’s Android SDK Manager)
Download the Android NDK (= r10e) for OS X or Linux.

2、版本对比:

GreenDao: org.greenrobot:greendao:3.1.0
Realm:io.realm:realm-android:0.84.1

3、引用方法

GreenDao:

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

apply plugin: 'org.greenrobot.greendao'

dependencies {
    compile 'org.greenrobot:greendao:3.1.0'
}

Realm V:0.84.1

dependencies {
    compile 'io.realm:realm-android:0.84.1'
}

Realm V:1.1.1

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

3、数据库操作(增删改查)

我们通过Demo使用GreenDao&Realm数据库对相同的数据进行1、10、100、1000、10000、100000条数据同时添加、删除、查询(id,name,age3个字段)观察其性能的真实对比,其它条件完全保持一致,仅计算数据库增删改查的时间。
通过记录大量数据取平均值,记录如下:
这里写图片描述
从这张表中体现出的现象:
在小量数据的查询与删除等操作中,两者的差距基本可以忽略不计,早超过同时插入、删除、查询1000条以上的数据分析得出。GreenDao在删除操作中,占明显优势,而Realm在添加与查询方面优于GreenDAO。

4、使用推荐

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

5、测试截图与测试Demo

下面是1000条数据的测试截图
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

项目内容:
这里写图片描述
Github下载地址:https://github.com/JackWaiting/GreenDao-Realm

5
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

GreenDao、Ormlite、Realm性能对比

GreenDao、Ormlite、Realm性能对比        该博文为我本人亲测,代码编写过程中使用到了百度上很多大神的demo,如http://blog.csdn.net/shareye19...
  • firesmog
  • firesmog
  • 2017-02-18 10:01
  • 2741

greenDAO与Realm的探索

最近项目中要用到数据库相关的知识,就在网上查了下Android平台上的数据库框架,目前比较热门有GreenDAO和Realm,这两个都是使用者都比较多,并且都在持续发布更新,就对这两个框架进行了一些探...
  • w2_2015
  • w2_2015
  • 2017-07-05 15:55
  • 728

Android ORM 框架之 greenDAO

我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的ORM 框...
  • qq_33721320
  • qq_33721320
  • 2017-07-04 12:32
  • 7645

强大的ORM之Realm基础使用总结

Realm简单介绍Realm 专为移动应用而生, 高效, 快速, 轻量. 表之间的关联不用我们自己管, 不用像 GreenDao 需要自己另外在创建外键关联. 与之相比真是省事不少. 支持阻塞式的...
  • StrongerCoder
  • StrongerCoder
  • 2017-04-26 18:27
  • 688

activiteAndroid数据库框架的使用demo

  • 2016-05-22 07:19
  • 3.00MB
  • 下载

Android开发需求功能一览表

按照目前我接触到的功能,大概划分下 1.框架     数据库,网络,缓存模式,H5交互(cordova) 2.带有主题并控件化,而且例如输入框这种  统一处理  有清空功能的 3.第三方服务...
  • z157794218
  • z157794218
  • 2016-02-22 10:59
  • 1711

Android Sqlite框架 GreenDao的源码分析笔记

Android Sqlite 框架GreenDao的源码分析笔记GreenDao是一个开源的项目,有助于开发者与存储在Sqlite中的数据打交道。Sqlite是关系型数据库。然而,用Sqlite开发需...
  • zhangjiaofa
  • zhangjiaofa
  • 2015-10-14 23:58
  • 3111

GreenDao分析概括

1.介绍 第一篇How to get started ? 原文地址:http://greendao-orm.com/documentation/how-to-get-started/该教程会带你浏览...
  • ading8986986
  • ading8986986
  • 2015-03-13 18:01
  • 439

GreenDao详解

GreenDao使用详解
  • Urchin_dong
  • Urchin_dong
  • 2016-03-14 01:40
  • 6302

SQLite数据库框架ORMLite与GreenDao的简单比较

摘要: 最近准备使用数据库做个缓存,但不知道哪个好用些
  • xushuaic
  • xushuaic
  • 2014-04-24 21:56
  • 16286
    个人资料
    • 访问:254657次
    • 积分:2585
    • 等级:
    • 排名:第16307名
    • 原创:34篇
    • 转载:0篇
    • 译文:2篇
    • 评论:67条
    博客专栏
    文章分类
    最新评论