美文网首页Android安卓相关进阶Android知识
Android ORM框架选择的一些总结

Android ORM框架选择的一些总结

作者: ddyos | 来源:发表于2016-01-26 01:44 被阅读4213次

为什么要用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

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

相关文章

网友评论

  • 90de7b8eb081:GreenDAO主键只能使用Int类型。请问这一点有什么好的解决办法呢?想使用guid来作为主键
    ddyos:没有这个限制,主键可以用String
  • offbye西涛:Realm的问题是不是sqlite,有自己独立的存储引擎,因此占用体积会比较大;
    优点是专为移动端设计,也有iOS版本
    ddyos:@offbye西涛 是的,库的体积也是一个考虑点
  • 布鲁马:Realm,StorIO,SqlDelight 和 SqlBrite 这些博主了解吗?
    还有我如果想去了解,只有官网对吧?英文好恶心
    布鲁马: @ddyos 嗯,谢谢回答。我把GreenDao官方文档通读了一遍,感觉很好,先从这个开始抓起
    ddyos:@布鲁马 简单说.Realm并不是传统的关系型数据库,有很多有用的特性,非常值得学习,官网有中文的wiki.... SqlBrite主要是提供了RxJava响应式的api,可以配合SqlDelight的代码生成一起使用,这两个比较轻量级....greenDao也开始支持RxJava了.....建议多了解greenDao和Realm,这两个的资料也比较多.
  • b6e4267f287b:ActiveAndroid 有空也说说呗
    ddyos:@luechenying ActiveAndroid是一个轻量级框架,但是性能一般,在注重性能的时候不建议使用.
  • 68768b474bfc:希望继续补充

本文标题:Android ORM框架选择的一些总结

本文链接:https://www.haomeiwen.com/subject/ogkdkttx.html