DaoSession类是greenDao的核心接口之一。DaoSession给开发者提供了entity操作的基本方法,以及Dao提供的一系列复杂方法。Sessions也用来管理实体的identity scope。
DaoMaster and DaoSession
正如greenDao使用快速入门所示,你需要创建一个DaoMaster来获取DaoSession。
1 2 3 4 |
daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); |
需要注意的是,Database connection是属于DaoMaster的,因此多个session是引用的同一个数据库连接。新的session创建非常快,然而,每一个session都需要分配内存。
Identity scope and session cache
如果两个查询返回同一个数据库记录,那么有多少个java对象呢;一个还是两个?这取决于identity scope。greenDao多个查询默认只返回同一个java对象。例如,查询从USER表中查询ID=42的记录,每一次查询结果都应该是同一个Java object。 缓存对象(caching entities)也会带来副作用。如果一个entity仍在内存中(greenDao使用的是weak references),那么这个entity对象和数据库中的最新的记录将会不一致。
例如,用ID来加载一个entity对象将会得到以前加载过的entity,greenDao不需要查询数据库。它将从session cache中立即返回entity对象,将会获得一到两个数量级的性能提升。
总结
这个文档在将来还会继续补充。现在请先了解Hibernate的session以此来了解session和identity scopyes的概念
greenDao讲解的很详细啊