greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。
ORM:对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
于ormLite的区别:ormLite是基于反射和注解,效率比较低,占用内存内存大
GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码。
要在新建的module模块对应的build.gradle里面配置依赖包以及生成类的位置
compile 'org.greenrobot:greendao:3.2.0'
apply plugin: 'org.greenrobot.greendao'
要在project对应项目的build.gradle里面配置依赖包
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
greendao { schemaVersion 1 //数据库的版本号 daoPackage 'com.anye.greendao.dao' //生成核心类DaoMaster、DaoSession、Dao的包目录 targetGenDir 'src/main/java' //生成的源文件储存目录}
private int tempUsageCount; // not persisted
之后编译 会自动生成get set 方法 在'com.anye.greendao.gen'下面自动生成3个类
@Entity 用于标识这是一个需要Greendao帮我们生成代码的bean
smeInDb 就是写个存在数据库里的表名(不写默认是一致)
inchema是一个项目中有多个schema时 标明要让这个dao属于哪个schema
active 是标明是否支持实体类之间update,refresh,delete等操作 相当于2.2版本的
CreateInDb 如果是有多个实体都关联这个表,可以把多余的实体里面设置为false避免重复创建(默认是true)
@Property 用于设置属性在数据库中的列名(默认不写就是保持一致)
@Property(nameInDb = “STUDENTNUM”) 表名这个属性对应数据表中的 STUDENTNUM 字段。
@Transient 标识这个字段是自定义的不会创建到数据库表里 相当于2.2版本的
@Unique 添加唯一约束,上面的括号里unique=true作用相同
@ToOne 是将自己的一个属性与另一个表建立关联,相当于2.2版本的
@ToMany 的属性referencedJoinProperty,类似于外键约束。
@JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性。
@JoinEntity 如果你在做多对多的关系,有其他的表或实体参与,可以给目标属性添加这个额外的注解(感觉不常用吧)
@Generated 这个是build后greendao自动生成的,这个注解理解为防止重复,每一块代码生成后会加个hash作为标记。 官方不建议你去碰这些代码,改动会导致里面代码与hash值不符。
daomaster以一定的模式持有数据库对象(SQLiteDatabase)并管理一些DAO类(而不是对象)。 有一个静态的方法创建和drop数据库表。它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现类,用于创建SQLite数据库的模式。
管理指定模式下所有可用的DAO对象,你可以通过某个get方法获取到。DaoSession提供一些通用的持久化方法,比如对实体进行插入,加载,更新,刷新和删除。最后DaoSession对象会跟踪identity scope,更多细节,可以参看 session文档。
数据访问对象,用于实体的持久化和查询。对于每一个实体,greenDao会生成一个DAO,相对于DaoSession它拥有更多持久化的方法,比如:加载全部,插入(insertInTx,语境不明了,暂且简单的翻译成插入)。
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "student.db", null);DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());DaoSession daoSession = daoMaster.newSession();
如果实体类有更新,那么要调用 daoSession.clear() 清除缓存,才能得到更新。
GreenDao多表查询是通过表的主键和外键进行查询的 有三种方式\ 一对一 一对多 多对多
http://www.cnblogs.com/ZWRpoi/p/6226269.html
http://www.jianshu.com/p/dbec25bd575f
比如需要在实体类加一个字段 或者 改变字段属性等 就需要版本更新来保存以前的数据了;