greenDAO与Realm的探索

greenDAO与Realm的探索_第1张图片

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

两者的官网和github链接:
GreenDAO:
http://greenrobot.org/greendao/
https://github.com/greenrobot/greenDAO

Realm:
https://realm.io/cn/
https://github.com/realm/realm-java

简单介绍

GreenDAO

greenDao是一款Android平台上的开源框架,提供将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。greenDAO对安卓进行了高度优化,提供了出色的性能和最小的内存消耗。它减轻开发人员处理低级数据库需求,同时节省开发时间,使SQLite数据库的开发变得有趣。

SQLite是一个令人敬畏的嵌入式关系数据库。不过,编写SQL和解析查询结果是相当乏味和耗时的任务。greenDAO通过将Java对象映射到数据库表(称为ORM ,对象关系映射)将您从其中解脱出来。通过简单的面向对象API,你就可以来存储,更新,删除和查询Java对象。

功能一览:

高性能(可能是Android最快的ORM):开源的基准
易用:功能强大的API涵盖关系和联接
最小的内存消耗
精简的库(<100KB):维持较少的编译时间,并避免65k方法数量的限制
数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
强大的社区:GitHub上超过5000个Star(现在已经超过8000了)表明有一个强大和积极的社区

Realm

Realm是一款可直接运行在手机,平板电脑或可穿戴设备上的移动数据库。Realm 移动端数据库快速、易用、开源且完全免费,深受开发者和亿万用户喜爱。Realm 是 SQLite 和 Core Data 的替代者,得益于其零拷贝的设计,Realm 比任何 ORM 都要快很多。Realm简单、快速,节约数周的开发时间。几分钟内就能学会使用 Realm。

功能一览:

离线优先:即使在离线状态下应用也可正常工作
查询快速:复杂查询也只需要几纳秒,查询结果与新数据实时同步
线程安全:多线程访问同一数据毫无问题
跨平台支持:多个平台不同应用使用同一数据库
加密:无需额外代码,就能保证你的数据安全
响应式架构:让Realm连接到UI,及时将数据更新反馈给用户

使用方法

我比较懒,贴一下别的博主的博客好了。

GreenDao3.0简单使用

这里需要说明的是,greenDAO在github上说

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}
 
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
 
dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
}

这里的root应该是project级的,app project是module级的

greenDAO与Realm的探索_第2张图片

我看很多文章里都没搞对。

Realm For Android详细教程

后面有时间的话自己再总结吧

速度对比

这里使用的版本是

greenDAO 3.2.2
Realm 3.1.1

速度在不同机型上不同的使用方法肯定会有偏差,这里仅作参考,但还是可以看出Realm在速度上的优势。

||增|删|改|查|
|--|
|GreenDAO(1条)|10ms|17ms|12ms|1ms|
|Realm(1条)|5ms|6ms|7ms|1ms|
|GreenDAO(10条)|47ms|55ms|100ms|2ms|
|Realm(10条)|6ms|11ms|8ms|1ms|
|GreenDAO(100条)|402ms|377ms|398ms|3ms|
|Realm(100条)|10ms|20ms|16ms|1ms|
|GreenDAO(1000条)|3959ms|3326ms|3297ms|3ms|
|Realm(1000条)|28ms|71ms|94ms|1ms|

END

框架的选择应该结合项目的需求,对比功能,稳定性,拓展性,易用性等多个方面。我也只是个小白,提不了什么有价值的建议。

最后贴上自己的代码,我只进行了最简单的使用:
https://github.com/xiaoniu/Database
需要的可以参考一下,有问题可以评论一下,欢迎探讨。

greenDAO与Realm的探索_第3张图片

你可能感兴趣的:(greenDAO与Realm的探索)