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 plugindependencies {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条) | 10ms | 17ms | 12ms |
Realm(1条) | 5ms | 6ms | 7ms |
GreenDAO(10条) | 47ms | 55ms | 100ms |
Realm(10条) | 6ms | 11ms | 8ms |
GreenDAO(100条) | 402ms | 377ms | 398ms |
Realm(100条) | 10ms | 20ms | 16ms |
GreenDAO(1000条) | 3959ms | 3326ms | 3297ms |
Realm(1000条) | 28ms | 71ms | 94ms |
END
框架的选择应该结合项目的需求,对比功能,稳定性,拓展性,易用性等多个方面。我也只是个小白,提不了什么有价值的建议。
最后贴上自己的代码,我只进行了最简单的使用:
https://github.com/xiaoniu/Database
需要的可以参考一下,有问题可以评论一下,欢迎探讨。
greenDAO与Realm的探索相关推荐
- Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。
AndroidNote 项目地址:venshine/AndroidNote 简介:Android 进阶笔记,包含常用的技术框架.博客社区.书籍等. 大纲 技术框架 图片加载 网络请求 数据库 ORM ...
- Android 进阶笔记。
本文转载自:Wei_Leng http://blog.csdn.net/u014608640/article/details/53063761 AndroidNote 项目地址:venshi ...
- 万字解读:预训练模型最新综述!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale学术 作者:太子长琴,Datawhale意向成员 如何在有限数据下训练出高效的 ...
- Android 开发者该如何进阶?
封面.png 前言 经常在简书和微信上收到一些同学的私信,说自己马上毕业或者已经毕业一年,从事Android开发相关的工作,现在不知道要学习什么东西了.或者说自己也在摸索着学习,但是不知道学习的路线对 ...
- android gridview控件使用详解_作为Android 开发者该如何进阶?
经常在简书和微信上收到一些同学的私信,说自己马上毕业或者已经毕业一年,从事Android开发相关的工作,现在不知道要学习什么东西了.或者说自己也在摸索着学习,但是不知道学习的路线对不对,感觉很迷茫,想 ...
- 2018 年 Android 应用程序的发展趋势
应用程序开发人员正在不断开发新方法,一方面简化和缩短开发流程,另一方面构建最佳设计和用户体验.每年我们都可以看到在移动应用程序开发中不断涌现的新型尖端技术和工具.在这里,我们将介绍一些趋势,让您更好地 ...
- 2019已经很冷,2020年Android工作或更难找——进大厂面试必备基础技能
一.写在开头 在互联网行业里,2019年来到今天你能听到的消息都是什么样的? "某D公司开始裁员了" "某A公司据说冻结社招了" "据说J公司今年没有 ...
- android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码...
Android精选源码 Android 炫酷的多重水波纹源码 Android开发一款基于行为识别和个性化推荐的智能推荐APP 仿IT之家Android源码 android判断App位于前台或者后台源码 ...
- android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码
Android精选源码 Android 炫酷的多重水波纹源码 Android开发一款基于行为识别和个性化推荐的智能推荐APP 仿IT之家Android源码 android判断App位于前台或者后台源码 ...
最新文章
- Controller 是单例还是多例?怎么保证并发的安全
- java-第十一章-类的无参方法-随机出一个商品规定次数猜对商品归用户所有
- 计算机网络期中考察方案,计算机网络期中考试题 b卷_ans.docx
- Hibernate用Mysql数据库时链接关闭异常的解决
- 读源码,对程序员重要吗?
- php sqlsrv 分页,Php+SqlServer如何实现分页显示
- Redis的两种备份方式:RDB和AOF
- 斑马打印机怎么打印二维码_万能打印机厂家是怎么改良打印机的?
- 中国企业500强完整榜单,请为自己和孩子收藏
- python网络爬虫学习笔记(二):爬虫基本概述
- python 全栈开发,Day54(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)...
- 工业园区与大型制造工厂企业食堂消费管理系统常见需求及解决方案
- 中国首档「程序员真人秀」综艺登上热搜,燃炸了!
- 为什么现在大多数服务器使用linux系统区别的一些总结
- juniper防火墙配置
- 区块链-压缩格式的密钥
- html指定区域的背景颜色,JS实现点击颜色块切换指定区域背景颜色的方法
- Python爬虫 | 以滑雪为例演示大众点评商铺信息采集!
- 一个画钟程序,终于做完了,作个记号
- Python使用Turtle画帕劳共和国国旗
热门文章
- node搭建webrtc信令服务器
- 树莓派I2C发送大数据的坑 lattice crosslink配置
- maven install时报错:程序包不存在以及找不到类
- application.properties转换成application.yml配置Oracle数据库连接时报错
- 制作准考证的步骤,作业
- 2021.2.4DataGrip中使用clickhouse 时区差了8小时
- linux断开会话不中断进程,Linux让进程后台运行且连接断开不影响(nohup、setsid、disown、screen)...
- Excel 将数据用逗号分割
- Linux系统中修改用户名的两种方案整理
- nohup 日志切割脚本实例