以前由于项目实时性要求比较高,所以一直没有用数据库;即使需要存储数据也是一些简单的数据,用SharedPreferences就足够了,项目中就一直没加入数据库。过段时间项目可能有存储数据的需求,就提前准备一下。怎么做比较好。现在开源的ORM框架也比较多,对于有选择困难症的我又是比较头疼的,不知道用哪个好,就在网上简单了解了下。
以前经常听说ORM,但一直不太了解具体是什么意思。今天简单了解了下,即Object Relational Mapping。就是对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。好处就是简化了数据库查询过程,用户可以访问期望数据,而不必理解数据库的底层结构。
能叫上名字的ORM框架也比较多,以前用过Litepal和OrmLite。GreenDao是早就听说了,但是一直没用过。通过查一些论坛帖子什么的感觉还是OrmLite和GreenDao用的比较多一点,所以决定从这两个里边选一个(其实Litepal也很好用,配置也很简单)。
那么具体要选用哪个呢,就要对比一下。
1、OrmLite
基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)
优点
文档较全面,社区活跃,有好的维护,使用简单,易上手。
缺点
基于反射,效率较低
2、GreenDao
直接用官网的说法:
Maximum performance (probably the fastest ORM for Android); our benchmarks are open sourced too
Easy to use powerful APIs covering relations and joins
Minimal memory consumption
Small library size (<100KB) to keep your build times low and to avoid the 65k method limit
Database encryption: greenDAO supports SQLCipher to keep your user’s data safe
Strong community: More than 5.000 GitHub stars show there is a strong and active community
优点
效率高、体积小、占用内存小
缺点
学习成本高。
这个是GreenDao官网上的对比,通过对比可以发现GreenDao插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4倍。这样呢我就更倾向于使用GreenDao了。虽然开始可能比较难,学习成本有点高,但是我还是想学一学的。
下一篇开始分享简单的用法和遇到的问题。