在Android项目中,越来越多的程序猿使用
GreenDao作为数据库管理的框架,本章就来谈一谈GreenDao相关的知识。
说到学习GreenDao我并不建议一开始就查看别人的博客,学习第三方框架都是从官方的说明文档开始的,GreenDao的官网是:
http://greenrobot.org/greendao
下面我将带领大家走一遍官方说明文档 。
(1)对象/关系映射(ORM)
greenDAO的本质是为存储在关系数据库SQLite中的数据提供面向对象的接口。只需为数据模型定义,greenDAO将创建Java数据对象(实体)和DAO(数据访问对象)。这将为您节省大量无聊的代码,只需来回移动数据。除此之外,greenDAO还提供一些高级ORM功能,如会话缓存,急切加载和活动实体。
(2)性能
在我们所知的所有ORM中,greenDAO是最快的。 greenDAO对性能没有任何妥协。数据库非常适合存储大量数据,因此速度很快。使用greenDAO,大多数实体可以以每秒几千个实体的速率插入,更新和加载。
下图的比较主要针对Android greenDAO,OrmLite和ActiveAndroid的3种最流行的ORM框架。 greenDAO以大约2倍的速度插入和更新实体,并且加载实体的速度比ORMLite快4倍。对于典型应用,加载速度是最重要的。

(3)加密支持
greenDAO支持加密数据库以保护敏感数据。
虽然较新版本的Android支持文件系统加密,但Android本身并不为数据库文件提供加密。因此,如果攻击者获得对数据库文件的访问权限(通过利用root访问权限,例如利用安全漏洞或欺骗root设备的用户),攻击者可以访问该数据库中的所有数据。使用受密码保护的加密数据库会增加额外的安全层。它可以防止攻击者打开数据库文件。
由于Android不支持开箱即用的加密数据库,因此您需要在APK中捆绑自定义的SQLite版本。这些自定义构建包含CPU相关的本机代码。所以你的APK大小会增加几MByte。因此,如果您确实需要加密,则应该只使用加密。
GreenDao<第二篇>:GreenDao的加密支持(sqlcipher的使用)
(4)GreenDao库的大小
greenDAO的核心库大小不到10万,因此添加greenDAO不会损害您的APK大小。
(5)活跃实体
如果需要,可以使实体“活动”:活动实体透明地解析关系(您只需调用getter),并具有更新,删除和刷新方法,以便于访问持久性功能。
(6)协议缓冲支持
greenDAO允许您将协议缓冲区(protobuf)对象直接保存到数据库中。如果您通过protobuf与服务器通信,则不需要其他映射。常规实体的所有持久性操作都可用于protobuf对象。我们相信这是greenDAO的独特功能。
(7)代码生成
greenDAO将生成Java数据对象(实体)和DAO对象。 DAO对象适用于允许最佳映射的实体。
未来计划:生成适配器,也许还有CRUD活动。
(8)开源
greenDA的源代码在GitHub上完全可用。源代码分发还包含一个JUnit测试套件,它使用了greenDAO的所有功能,因此是了解greenDAO的好方法。
(9)支持
greenDAO是开源的,并得到其开发人员和社区的支持。