greendao(3)--- 源码分析

https://www.jianshu.com/p/4c15d8061bc6
官方Code,值得一看

  • 特点 (对我们的来说就是框架的功能,平时阅读源码注意如何实现)

(1) Rock solid: greenDAO has been around since 2011 and is used by countless famous apps 

   非常稳定,自从 2011 年开始就被无数有名气的 App 使用

(2) Super simple: concise and straight-forward API, in V3 with annotations
    超级简单(倒是觉得没有 LiteOrm简单),有简单的使用 API,在 v3 版本中引入注解
 
(3) Small: The library is <150K and it's just plain Java jar (no CPU dependent native parts)
    很小,库是于 150 K 的 jar 包(不含有依赖 CPU 的本地代码部分,指的是 so库)

(4) Fast: Probably the fastest ORM for Android, driven by intelligent code generation
    速度快,可能是 android 上最快的 ORM,可以自动生成代码
 
(5) Safe and expressive query API: QueryBuilder uses property constants to avoid typos
    安全和容易记忆的查询 API:QueryBuilder 使用合适的常量来避免拼写错误
 
(6) Powerful joins: query across entities and even chain joins for complex relations
    有强大的联合查询:支持实体间的交叉查询,以及支持复杂的链式查询
 
(7) Flexible property types: use custom classes or enums to represent data in your entity
    拥有更灵活的类型,可以使用类类型或者枚举,来表示你的实体类
 
(8) Encryption: supports SQLCipher encrypted databases
    可以加密:支持 SQLCipher 加密数据库

DaoMaster /DaoSession /xxDAO关系

理解了 DaoMaster、DaoSession、xxDAO 这个几个类, greenDAO 也就基本理解了

  • DaoMaster:使用greenDAO的切入点。 DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的DAO类(而不是对象)。 它有静态方法来创建表或删除它们。 它的内部类
    OpenHelper和DevOpenHelper都是SQLiteOpenHelper的实现,用来在SQLite数据库中创建模式。
  • DaoSession:管理特定模式的所有可用DAO对象,你可以使用其中一个的getter方法获取DAO对象。 DaoSession还为实体提供了一些通用的持久性方法,如插入,加载,更新,刷新和删除。 最后,DaoSession对象也跟踪identity scope。
  • xxDAO:数据访问对象(DAO),用于实体的持久化和查询。 对于每个实体,greenDAO会生成一个DAO。 它比DaoSession拥有更多的持久化方法,例如:count,loadAll和insertInTx。

记忆点Master,我记得功夫熊猫里阿宝称师傅为Master,也就是大师的意思。可见DaoMaster的地位; 同理Session就是一场会话,为Daoj进行CURD操作。
这里给出一个比喻,DaoMaster 相当于一个 Boss,统领大局,但是具体的工作会交给 DaoSession, DaoSession 相当于一个 Leader,会负责管理一些 xxDAO,当然也可以有多个 DaoSession,DaoSession 会提供数据库操作的一些方便的入口方法,其内部具体的执行会交给 xxDAO 执行,xxDAO 负责自己对应的实体类对象的增删改查,其中执行过程中需要 DaoConfig 和 DatabaseStatement,拿到拼接的 sql 语句和要存储的实体类的参数值,最终会通过原生数据库完成操作,基本就是这样一个过程,可以理解为职责一步步向下传递的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值