greenDao是Android平台的对象关系映射工具object/relational mapping(ORM)。greenDao为关系型数据库提供面向对象的接口。数据库相关的重复枯燥的任务将由greenDao这样的ORM工具完成。
DAO Code Generation(DAO代码自动生成)
在Android项目中使用greenDao,首先需要创建一个代码生成器(generator project),它负责生成数据库相关的实体类与Dao层的代码。注意:它是一个普通的java项目而不是Android项目。它需要依赖greenDAO-generator.jar和Freemarker模版库。greenDao schema entity使用详解
Core Classes(核心类)
当代码生成之后,就可以在Android项目中使用greenDao了。但是别忘了导入greenDao.jar到你的Android项目中去。
接下来介绍的核心类都是greenDao中非常重要的。
DaoMaster:它是greenDao的入口。DaoMaster持有了数据库对象(SQLiteDatabase),并且管理所有的DAO类。DaoMaster中包含创建和删除表的静态方法。其中的内部类OpenHelper和DevOpenHelper都是SQLiteOpenHelper的实现,用来创建数据库表结构。
DaoSession:用来管理DAO对象,可以通过get方法获取。DaoSession也提供一些持久化的方法,像insert、load、update、refresh、delte等。它还跟踪identity scope。查看Android greenDao sessions详解
DAO:数据访问对象(DAO)用来持久化和查询实体对象。对于每一个实体对象(entity),greenDao都生成一个对应的DAO。比DaoSession包含更多的方法,比如count、loadAll、insertIntx等。
Entites:持久化对象,通常entities都是通过前面提到的代码生成器自动生成的(当然你也可以自己写,如果你不嫌累的话)。其实就是一个标准的java对象(就像POJO和JavaBean)用来代表数据库中的一行。
Core Initialization(核心组件初始化)
下面的代码展示了初始化数据库和greenDao核心组件的第一步:
1 2 3 4 5 6 |
helper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); |
这个例子中假设已经有一个“Note”实体了。用他的DAO(noteDao),我们就可执行指定entity的持久化操作了。