首页 > 代码库 > GreenDao开源ORM框架浅析

GreenDao开源ORM框架浅析

Android程序开发中,避免不了要用到数据库,我们都知道android提供了内置的Sqlite,即调用SQLiteOpenHelper的方法,来操作数据库,但是使用过程较为繁琐,从建表到对表中数据的正删改查操作,需要大量的代码来建立表,和完成这些操作。

GreenDao居然是ORM框架,它跟hibernate是很像的,就是当你配置了一些参数信息之后,可以由框架来帮你生成对应的实体类,还有生成对应的操作实体类的代码(自动建表和基本的增删改查)。

    优点: 1.最大性能(最快的Android ORM) 

          2.易于使用API

           3.高度优化

            4.最小内存消耗




首先我们先看下怎么构建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更加具体的使用,希望大家自己去看官方的文档学习。

1.greenDAO官网:http://greendao-orm.com/

2.项目下载地址:https://github.com/greenrobot/greenDAO