在平时的开发过程中,大家一定会或多或少地接触到 SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。
所以,适用于 Android 的ORM 框架也就孕育而生了,现在市面上主流的框架有 OrmLite、SugarORM、Active Android、Realm 与 GreenDAO。
GREENDAO 设计的主要目标:
- 一个精简的库
- 性能最大化
- 内存开销最小化
- 易于使用的 APIs
- 对 Android 进行高度优化
GREENDAO 设计的主要特点:
- greenDAO 性能远远高于同类的 ORMLite,具体测试结果可见官网
- greenDAO 支持 protocol buffer(protobuf) 协议数据的直接存储,如果你通过 protobuf 协议与服务器交互,将不需要任何的映射。
- 与 ORMLite 等使用注解方式的 ORM 框架不同,greenDAO 使用「Code generation」的方式,这也是其性能能大幅提升的原因。
在AndroidStudio中使用GreenDao
1.在 .src/main 目录下新建一个与 java 同层级的「java-gen」目录,用于存放由 greenDAO 生成的 Bean、DAO、DaoMaster、DaoSession 等类。
2.配置 Android 工程(app)的 build.gradle,添加如下代码
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java-gen']
}
}
compile 'de.greenrobot:greendao:2.1.0'
3.建立纯Java工程
在java工程的build.gradle中添加dependences
compile 'de.greenrobot:greendao-generator:2.1.0'
我们的 Java 工程只有一个类,它的内容决定了「GreenDao Generator」的输出,你可以在这个类中通过对象、关系等创建数据库结构,
编写generator类
a.创建一个用于添加实体(Entity)的模式(Schema)
Schema schema = new Schema(1,"com.it.zjhz.dao");
两个参数分别代表:数据库版本号与自动生成代码的包路径。
b.编写生成Bean和Dao的方法并调用
public static void addNote(Schema schema){
Entity entity = schema.addEntity("Note");
entity.addIdProperty();
entity.addStringProperty("name").notNull();
entity.addStringProperty("comment");
entity.addDateProperty("date");
}
addNote(schema);
c.
new DaoGenerator().generateAll
(schema,"H:/mian/GreenDaoTest/app/src/main/java-gen");
运行java工程,生成Bean、Dao、DaoMaster、DaoSession
执行增删查改操作
获取到Dao对象
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this, "notes-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
NoteDao noteDao = daoSession.getNoteDao();