SQLite数据库框架ORMLite与GreenDao的简单比较
笔记摘要:最近准备使用数据库做个缓存,以前因为项目中的实时性要求比较高,所以在整体的框架中就没有加缓存,有些地方只 是简单的将对象保存到了Preference中,所以并没有对数据库方面有所研究,既然准备使用数据库了,那就深入了解下吧,对以后也有好处。现在开源社 区也有很多的ORM框架,但不知道哪个好用些,所以就上网查了一下,简单的总结了下,现在分享给大家。
先 介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思。其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的 “虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的.
两者之间是不匹配的.而ORM作为项目中间件形式实现数据在不同场景下数据关系映射.
对象关系映射是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM就是这样而来的。
下面先列出几个ORM框架:ORMLite、greendao、ormndroid、androrm、ActiveAndroid
其中以前最早接触过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更详细的文章,有对官方文档的翻译还有代码的简单讲解。
或许以上内容很简单,只是简单的介绍了下,对其它几个框架并没有做更多的介绍,有了解的朋友可以提出来,可以提出来,大家一起探讨下。
SQLite数据库框架ORMLite与GreenDao的简单比较的更多相关文章
- Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...
- SQLite数据库框架--FMDB简单介绍
1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 对比 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- Android 数据库框架ormlite
Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...
- Android数据库框架-----ORMLite 的基本用法
ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...
- Android数据库框架-----ORMLite关联表的使用
上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...
- FMDB是iOS平台的SQLite数据库框架
1.FMDB简介 什么是FMDBFMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 为什么使用FMDB使用起来更加面向对象,省去了很多麻烦.冗余的C语言 ...
- SQlite数据库框架:LitePal
常用的数据库框架Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.Andr ...
- Android 数据库框架OrmLite的使用(二)
前面说了OrmLite的基本使用,现在说下更规范的做法以及常用的一些功能. 1.DatabaseHelper package com.example.ormlite.db; import java.s ...
随机推荐
- 【转】install intel wireless 3165 driver for ubuntu 14.04.3
[转]install intel wireless 3165 driver for ubuntu 14.04.3 Ubuntu 14.04.3 with 3.19 kernel can’t drive ...
- [译]Stairway to Integration Services Level 4 - 增量更新数据
在本文中, 我们说下增量更新数据:即将数据源中更新了的数据替换掉目标表中对应的数据. 更新代码 操作之前我们先把目标表e (dbo.Contact). 的数据改掉 Use AdventureWorks ...
- C# Best Practices - Handling Strings
Features Strings Are Immutable. A String Is a Reference Type Value Type Store their data directly Ex ...
- java结构与算法之冒泡排序
一.什么是冒泡排序:冒泡排序是在从相邻两个数之间进行比较,这里将前面一个值定义为before,后面一个值定义为after:当before>after时i,交换他们的值,如果before<a ...
- IOS开发:UIAlertView使用
链接地址:http://www.2cto.com/kf/201307/231841.html UIAlertView是什么就不介绍了 1.基本用法 1 UIAlertView *view = [[UI ...
- 漏网之鱼--HTML&CSS
一.HTML <meta>标签使用该标签描述网页的具体摘要信息,包括文档内容类型,字符编码信息,搜索关键字,网站提供的功能和服务的详细描述等.<meta>标签描述的内容并不显示 ...
- 推荐font-size的单位 % em单位
在如今这个提倡可用性设计以及用户体验设计的网络时代,CSS也是要一同参与其中的.大部分人在CSS代码编写中总是先对整体定义字体尺寸,中文情况下一般为12px,而其实这样以来在通过IE顶部菜单中的“察看 ...
- PCB设计铜铂厚度、线宽和电流关系
以下总结了网上八种电流与线宽的关系公式,表和计算公式,虽然各不相同(大体相近),但大家可以在实际的PCB板设计中,综合考虑PCB板的大小,通过电流,选择一个合适的线宽. 一.PCB电流与线宽 PCB载 ...
- Qt Creator插件工作流程代码走读
Qt Creator有个很风骚的插件管理器PluginManager,还有个很骚包的插件说明PluginSpec.基本上,所有的Qt程序的入口都是传统的C程序一样,代码流程从main()函数开始. ...
- 【JQuery】Could not find action or result No result defined for action
ajax调用时,返回值错误了.一般返回null即可.