4

GreenDao开源ORM框架浅析

 3 years ago
source link: https://blog.csdn.net/ljphhj/article/details/37738943
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

GreenDao开源ORM框架浅析

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

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

其他的ORM框架:OrmLite, Androrm 相对比较简单,但是性能没有GreenDao好!

    优点: 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中的函数,就可以对数据库中相应的表进行增删改查了。

此文仅抛砖引玉,还有另外的一些GreenDao更加具体的使用,希望大家自己去看官方的文档学习。

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK