Android Orm框架分析

3022人阅读 评论(2) 收藏 举报
分类:

笔记摘要:最近准备使用数据库做个缓存,以前因为项目中的实时性要求比较高,所以在整体的框架中就没有加缓存,有些地方只是简单的将对象保存到了Preference中,所以并没有对数据库方面有所研究,既然准备使用数据库了,那就深入了解下吧,对以后也有好处。现在开源社区也有很多的ORM框架,但不知道哪个好用些,所以就上网查了一下,简单的总结了下,现在分享给大家。


先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思。其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的.  两者之间是不匹配的.而ORM作为项目中间件形式实现数据在不同场景下数据关系映射. 对象关系映射是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM就是这样而来的。


下面先列出几个ORM框架:ORMLitegreendaoormndroidandrormActiveAndroid

其中以前最早接触过ormlite,GreenDao了解过,其他的几个真没怎么见过。所以这里主要介绍ormlite和GreenDao。

最开始现在stackoverflow输入sqlite orm关键字,搜索出了一些相关的文章:http://stackoverflow.com/search?q=sqlite+orm ,你会发现很有趣的是,ormlite的作者Gray和greenDao的开发团队green robot同时出现在一些帖子中,向提问者推荐他们的框架。当然也会有一些热心的朋友推荐ormdroid。其实不论在stackoverflow上还是官网上,greenDao的团队的比较都是针对ORMLite的,可见,其主要的竞争对手,或许称互相促进者更合适,毕竟他们没有什么商业利益,完全开源。所以开源的ORM框架中,ormLite和greenDao是最火的。其它几种就不做比较,有兴趣的朋友可以到官网看下。下面对ORMLite和GreenDao做个简单的比较:


ormlite
基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)

优点:
文档较全面,社区活跃,有好的维护,使用简单,易上手。

缺点:
基于反射,效率较低

GreenDao

官网中明确指明了其首要设计目标:
Maximum performance (probably the fastest ORM for Android):系能最大化
Easy to use APIs:便于使用
Highly optimized for Android:对于Android高度优化
Minimal memory consumption:最小化内存开销
Small library size, focus on the essentials:较小的文件体积,只集中在必要的部分上。

优点:
效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍。官网测试结果:http:/

/greendao-orm.com/features/
文件较小(<100K),占用更少的内存 ,但是需要create Dao,
操作实体灵活:支持get,update,delete等操作


缺点:

学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。


另外GreenDao支持Protocol buffers协议数据的直接存储 ,如果通过protobuf协议和服务器交互,不需要任何的映射。

Protocol Buffers协议:以一种高效可扩展的对结构化数据进行编码的方式。google内部的RPC协议和文件格式大部分都是使用它。
RPC:远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。


可能因为GreenDao的效率高,而且需要学习成本高点,所以个人还是有兴趣学一学的。接下来会发布一些GreenDao更详细的文章,有对官方文档的翻译还有代码的简单讲解。

或许以上内容很简单,只是简单的介绍了下,对其它几个框架并没有做更多的介绍,有了解的朋友可以提出来,可以提出来,大家一起探讨下。


查看评论

最好的5个Android ORM框架

在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter )。 对于第一种方式,即本地数据存储,如...
  • iefreer
  • iefreer
  • 2014-09-10 23:14:16
  • 40207

Android使用ORM思想封装数据库

什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去...
  • leirenbaobao
  • leirenbaobao
  • 2015-09-10 11:08:07
  • 576

Orm框架介绍和常见的Android Orm框架

ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。 先介绍一下ORM的概念,以前也一...
  • lxlmycsdnfree
  • lxlmycsdnfree
  • 2017-02-06 10:58:41
  • 1569

Android ORM框架 LiteOrm使用

关于Android ORM框架,之前写过关于GreenDao的使用,在被安利了一篇 Android数据库框架:greenDAO vs LiteOrm ,又看了下LiteOrm的基本使用,很方便,而且...
  • u014099894
  • u014099894
  • 2016-06-05 10:36:09
  • 13800

Android ORM数据库的使用

一.ORM数据库框架ActiveAndroid的特点和优势 1.什么是ORM框架: ORM(Object Relational Mapping)框架采用元数据来描述对象与关系映射细节。把对...
  • fengshiguang2012
  • fengshiguang2012
  • 2016-09-03 14:11:22
  • 85

手把手带你撸一套Android简易ORM框架

ORM概念 实体模型建立 注解列 ID 主键 自增长 数据表的列 实体基类 实体类映射成表结构 数据库操作封装 数据库升级ORM概念对象关系映射(Object Relational Mapping),...
  • yyh352091626
  • yyh352091626
  • 2017-06-07 19:41:05
  • 1165

快速开发之Android Orm总结

概述在android平台上,常用的数据保存方式有Preference,文件和数据库,针对于数据库操作, 一般都会采用orm框架来解决问题,Android中使用比较广泛的Orm有LiteOrm,Orm...
  • wbwjx
  • wbwjx
  • 2016-06-14 08:11:30
  • 1320

GreenDAO—Android ORM框架(一)

内容介绍:GreenDAO框架的介绍和使用 最新更新时间:2016/7/5 12:00 官网:http://greenrobot.org/greendao/ 版本:V2.2.1 B...
  • KevinDGK
  • KevinDGK
  • 2016-07-05 18:18:19
  • 2040

Android ORM 框架之 ActiveAndroid应用基础

ActiveAndroid作为轻量级的ORM框架,在快速开发中,使用很简单,满足大部分对数据库操作不复杂的应用。一,配置添加依赖build.gradle中添加:repositories { m...
  • u012585964
  • u012585964
  • 2016-09-03 04:57:58
  • 2088

Android ORM 框架之 greenDAO 使用心得

Android ORM 框架之 greenDAO 使用心得
  • pxlprefect
  • pxlprefect
  • 2017-05-26 20:27:38
  • 498
    个人资料
    等级:
    访问量: 3万+
    积分: 472
    排名: 10万+
    文章分类
    文章存档
    最新评论