安卓 mysql 框架_Android开源的数据库框架

平常进行Android数据库开发时,都是使用原生的API,即SQLiteDatabase。但,使用系统的API开发时,尤其是SQL语句的书写时经常出现一些问题,因此便出现了许多针对数据库开发的开源框架,例:LiteOrm、GreenDao、Realm等。本篇文章主要是介绍Android中常用的几个数据库框架,以便了解。

声明:在每个框架前都有对应的原文出处。一、LiteOrm:

具体参考:https://blog.csdn.net/u014099894/article/details/51586500

一个开源的基于注解的Android数据库框架。  "Lite Object ralational mapping"---轻量级的对象关系映射。

实际上是对SQLiteDatabase、SQLiteOpenHelper等的封装,内部使用的还是这些类。

1、操作步骤:

(1)实例化LiteOrm对象:

LiteOrm liteOrm = LiteOrm.newSingleInstance(this, "liteorm-notes");  //或newCascadeInstance()用来支持级联操作。

(2) 执行增删改查操作:

liteOrm.insert(note);   //Note:针对表的实体类.

说明:Note默认类名为表名,字段名为列名,id(或者_id)属性为主键,但若要自定义表名、列名和主键,需要给Note(对象模型Model)加上注解。

注解:@Table    @Column    @NotNull   @PrimaryKey....

3、在Android Studio中的使用:由于LiteOrm不支持gradle引入,因此,需要导入jar包的形式使用!

compile files('libs/lite-orm-1.7.0.jar')

(1)项目中,若仅存在一个数据库,则可将LiteOrm设置为全局单例(Application中创建),否则多次调用会抛出异常"数据库已经关闭"!

(2)一个实体类只能对应一张表,@Table(...)

二、GreenDao:

原文参看:https://www.jianshu.com/p/53083f782ea2

GreenDao操作的模型(对象模型,即针对数据库表)是由其代码生成工具产生的。

优点:支持SQLCiper,数据库加密,以确保用户的数据安全。

缺点:太复杂。

1、包含三个核心类:

DaoMaster:保存数据库对象(SQLiteDatabase)并管理特定模式的DAO类(而不是对象)。它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper实现,它们在SQLite数据库中创建模式。

DaoSession:管理特定模式的所有可用DAO对象,您可以使用其中一个getter方法获取该对象。DaoSession还提供了一些通用的持久性方法,如实体的插入,加载,更新,刷新和删除。

XXXDao:数据访问对象(DAO)持久存在并查询的实体。对于每个实体,GreenDao生成DAO。

Entities:可持久化对象。通常,实体对象代表一个数据库行。

2、操作步骤:以Android Studio为开发工具。

(1)导入Gradle插件和Dao代码生成,并在代码中添加相关配置,

导入插件:在整个项目的build.gradle中添加配置.

配置依赖:在Module:app的build.gradle中添加依赖.

配置数据库相关信息。greendao{ ......}

配置完成后,在AS中Build--->Make Project,重新构建项目,GreenDao集成完成!

(2)创建存储对象实体类:在类前声明@Entity注解即可使GreenDao为其生成必要的代码。例如GreenDao会创建对应的表。

(3)GreenDao初始化:可以在Application中维持一个全局的会话。

private voidinitGreenDao() {

DaoMaster.DevOpenHelper helper= new DaoMaster.DevOpenHelper(this, "aserbao.db");

SQLiteDatabase db=helper.getWritableDatabase();

DaoMaster daoMaster= newDaoMaster(db);

daoSession=daoMaster.newSession();

}privateDaoSession daoSession;publicDaoSession getDaoSession() {returndaoSession;

}

(4)在项目中实现增删改查功能。

3、注解:@Entity  @Id  @Property @NotNull @Transient等。

@Transient:此标记表示不会生成数据库表的列。即要从持久性中排除的属性。将它们用于临时状态等。或者,您也可以使用Java中的transient关键字。

4、GreenDao数据库加密:通过SQLCiper实现,

(1)首先需要在build.gradle中配置加密库文件:

implementation 'net.zetetic:android-database-sqlcipher:3.5.6'

(2)修改DaoSession的生成方式:

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "aserbao.db");//SQLiteDatabase db = helper.getWritableDatabase();//不加密的写法

Database db = helper.getEncryptedWritableDb("aserbao"); //数据库加密密码为“aserbao"的写法

DaoMaster daoMaster = newDaoMaster(db);

daoSession= daoMaster.newSession();

三、Realm:

性能是几种数据库框架中最好的。和SQLite不同,它允许在持久层直接和数据对象工作。

缺点:对model类的限制太多,直接导致某些情况下model不能复用,需要重新拷贝一份来单独处理业务逻辑部分,在机器内存有限的情况下这样做肯定不        好,不过官方貌似也意识到了。

四、总结

以上简述了三种常用的数据库框架,但无论哪种,只是工具罢了,熟悉数据库操作的原理才是重点,万变不离其宗!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值