为什么要用ORM
一般情况下,当预料到数据库会复杂到某个程度,就有必要引入数据库的ORM框架,这样可以大大降低开发和维护的成本。当然,站在巨人的肩膀上,选择好的开源库更可以事半功倍。
选择怎么样的ORM
Android上的ORM框架不少:GreenDao, Active Android,Schematic,Ollie,Sprinkles...到底应该如何选择?
先上性能对比(http://greenrobot.org/android/android-orm-performance-2016/):
这些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,非常值得关注!!!
image.png以上是一些简单的思考总结,欢迎交流。
网友评论
优点是专为移动端设计,也有iOS版本
还有我如果想去了解,只有官网对吧?英文好恶心