greenDAO与Realm的探索

最近项目中要用到数据库相关的知识,就在网上查了下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级的


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

Realm For Android详细教程

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

速度对比

这里使用的版本是

greenDAO 3.2.2
Realm 3.1.1

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

GreenDAO(1条)10ms17ms12ms
Realm(1条)5ms6ms7ms
GreenDAO(10条)47ms55ms100ms
Realm(10条)6ms11ms8ms
GreenDAO(100条)402ms377ms398ms
Realm(100条)10ms20ms16ms
GreenDAO(1000条)3959ms3326ms3297ms
Realm(1000条)28ms71ms94ms

END

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值