Android ORM框架选择的一些总结

为什么要用ORM

一般情况下,当预料到数据库会复杂到某个程度,就有必要引入数据库的ORM框架,这样可以大大降低开发和维护的成本。当然,站在巨人的肩膀上,选择好的开源库更可以事半功倍。

选择怎么样的ORM

Android上的ORM框架不少:GreenDao, Active Android,Schematic,Ollie,Sprinkles...到底应该如何选择?

先上性能对比(http://greenrobot.org/android/android-orm-performance-2016/):

Android ORM框架选择的一些总结_第1张图片

这些ORM框架用到的实现方式主要有几种:
1.注解(运行时 Annotation,编译时 Annotation)
2.反射
3.直接生成代码
这里简单地直接说结论:
通过运行时注解反射去建立数据表和实体的关系会导致性能比较低
性能角度出发,应该选择使用编译时注解代码生成的框架。
当然,成熟程度,文档资料等也是考量点。

推荐的选择(以性能为基本要求)

greenDAO

1.相关代码通过另一个普通的Java项目直接生成,不会导致性能瓶颈。
2.功能特性相当完善,版本稳定,greenrobot 2011开始的项目。
3.文档较完善,使用者较多。
注意:
1.数据库版本升级和数据迁移:官方没有提供完善的解决方案,但可以参考stackoverflow上相关的讨论(关键字:greendao schema)。
2.尚未正式支持集成SQLCipher加密,但是已有解决方案:https://github.com/greenrobot/greenDAO/issues/6
3.Content Provider Generation尚未正式完成:https://github.com/greenrobot/greenDAO/issues/111
重要更新:
1.正式支持SQLCipher 加密。
2.greenDao V3.X 开始使用 编译时注解 + Gradle Plugin 去生成实体和框架代码。
3.开始支持RxJava,但是不支持RxJava2(https://github.com/greenrobot/greenDAO/issues/520)

DBFlow

1.相关代码通过编译时注解生成,不会导致性能瓶颈。
2.功能特性比较丰富。
3.文档较完善。
4.数据库版本升级和数据迁移-有较简便的解决方案。
5.支持集成SQLCipher加密。
6.支持Content Provider Generation。
注意:
1.项目的版本尚未稳定,使用者不多

趋势

NoSQL/对象型数据库

NoSQL是趋势。其实对关系型数据库引入ORM,就是实现了对象型数据库要做的事情。

Realm

ObjectBox

速度方面碾压SQLite,非常值得关注!!!

Android ORM框架选择的一些总结_第2张图片
image.png

以上是一些简单的思考总结,欢迎交流。

你可能感兴趣的:(Android ORM框架选择的一些总结)