美文网首页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