首页 > 代码库 > GreenDao开源ORM框架浅析
GreenDao开源ORM框架浅析
Android程序开发中,避免不了要用到数据库,我们都知道android提供了内置的Sqlite,即调用SQLiteOpenHelper的方法,来操作数据库,但是使用过程较为繁琐,从建表到对表中数据的正删改查操作,需要大量的代码来建立表,和完成这些操作。
GreenDao居然是ORM框架,它跟hibernate是很像的,就是当你配置了一些参数信息之后,可以由框架来帮你生成对应的实体类,还有生成对应的操作实体类的代码(自动建表和基本的增删改查)。
首先我们先看下怎么构建GreenDao的环境
一、Android Studio 中配置GreenDao依赖(Eclipse中直接下载jar包)
在项目中build.gradle中加入下面红色字体部分:
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
compile ‘com.android.support:appcompat-v7:19.+‘
compile ‘de.greenrobot:greendao:1.3.7‘
compile ‘de.greenrobot:greendao-generator:1.3.1‘
}
Eclipse的话直接下载下面三个包导入libs
二、GreenDao使用详解
GreenDao流程图:
引入了这个流程图,那么我们开始浅析关于这幅图。
居然GreenDao是用来帮我们简化建表、增删改查操作的,而且从上面的图中我们可以知道,原来不用GreenDao的时候,我们需要自己去写XyzEntity(实体类bean), 写完实体类之后,我们会写操作对应实体类的XyzDao。
另外GreenDao引入了两个类,
DaoSession: 操作具体DAO对象的各种getter方法。
DaoMaster: 它保存了我们的SQLiteDataBase对象及操作DAO类。还有提供一些创建和删除Table的静态方法,它的内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。
那么现在用了GreenDao我们需要做些什么,而不需要做什么呢?
1.我们需要在Android项目中创建一个Java类(带main函数)
2.导入greenDao-generator.jar和freemarker.jar两个包。
3.创建Schema,指定数据库的版本号、Java package参数
Schema schema = new Schema(1000,"com.example.greendao.note");
4.创建Entity,并添加到Schema对象中(Entity:相当于数据库中的表, 所以又可能有ToOne, ToMany的关系),调用该函数 传入
第三步生成的Schema对象。
private static void addNote(Schema schema){
//生成一个Note Bean
Entity note = schema.addEntity("Note");
note.addIdProperty();
note.addStringProperty("text").notNull();
note.addStringProperty("comment");
note.addDateProperty("date");
}
5.Entity添加到Schema对象之后,调用DaoGenerator,进行自动生成上面所述的四个类
new DaoGenerator().generateAll(schema,"./app/src/main/java");//指定要生成的Schema,还有类生成之后存放的路径
到此为止,就基本上已经完成了一个最简单的对象实体关系映射了。
然后我们就要开始使用这些类了,根据我们上面的介绍,我们知道我们需要先从DaoMaster的内部类DevOpenHelper中得到我们想要的SQLiteDatabase对象,然后我们需要通过这个对象创建出对应的DaoMaster类对象daoMaster,有了这个daoMaster之后,我们就可以实例化一个新的会话Session, 通过这个Session再来得到相应的实体Dao, 最后操作这个Dao中的函数,就可以对数据库中相应的表进行增删改查了。
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(),"notedb",null); db = devOpenHelper.getWritableDatabase(); master = new DaoMaster(db); DaoSession session = master.newSession(); CustomerDao customerDao = session.getCustomerDao(); customerDao.insert(new Customer());
此文仅抛砖引玉,还有另外的一些GreenDao更加具体的使用,希望大家自己去看官方的文档学习。