前言

Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样会在数据库操作上损失一点性能,但基于xxxx对数据库操作不频繁性能要求不高可以使用,所带来的好处即使有一个良好的统一的数据库操作以及降低代码维护成本.

适合与android的数据库持久化框架主流的有2种: androrm和ormlite.简单的对这2种框架以及SQLite在CPU:1GHz,RAM:512M的android的及其上进行插入1W条数据的性能测试,得到的结果如下: SQLite=287.488s; androrm=310.562s;ormlite=333.760s.可见使用原始的SQLite性能最高. 由于ormlite用注解字段的方式,使得在性能有着一定的损失. 不过, ormlite架构更适合java,而且类似hibernate,而androrm适合与python.

下面就对ormlite框架进行简单的介绍.

1.  ormlite框架

1.  从http://ormlite.com/releases/下载对应的核心包core及android支持库.然后在项目中加入两个jar包.

2.  存储的数据对象实体

public class Entity{

@DatabaseField(generatedId = true)//自增长的主键

int id;

@DatabaseField//声明string为数据库字段

String string;

public Entity() {

//ormlite中必须要有一个无参的构造函数

}

...

}

ormlite是通过注解方式配置该类的持久化参数,其中常用参数如下:

1.表名:不指定的话表名就是类名.

@DatabaseTable(tableName="dataTableName")

2.字段:这个可以配置的属性有点多.

@DatabaseField

(1)主键:

@DatabaseField(id=true)

(2)列名: 不指定的话就是和变量名一样的

@DatabaseField(columnName="columnName")

(3) 数据类型: 这个一般情况下都不用指定,可以根据java 类获得

@DatabaseField(dataType=DataType.INTEGER)

(4) 默认值:

@DatabaseField(defaultValue="0")

(5)长度:一般用于String型

@DatabaseField(width=13)

(6) 能否为空:默认为True

@DatabaseField(canBeNull=false)

3.  需要数据DataHelper类,来创建及管理数据库. DataHelper类继承OrmLiteSqliteOpenHelper.并在覆盖实现onCreate, onUpgrade, close等方法.

@Override

public
void
onCreate(SQLiteDatabase db, ConnectionSource connectionSource){

try{

Log.e(DataHelper.class.getName(),
"开始创建数据库");

TableUtils.createTable(connectionSource, Entity.class);

Log.e(DataHelper.class.getName(),
"创建数据库成功");

}catch(SQLException e){

Log.e(DataHelper.class.getName(),
"创建数据库失败", e);

}

}

@Override

public
void
onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource,
int arg2, int arg3){

try{

TableUtils.dropTable(connectionSource, Entity.class,
true);

onCreate(db, connectionSource);

Log.e(DataHelper.class.getName(),
"更新数据库成功");

}catch(SQLException e){

Log.e(DataHelper.class.getName(),
"更新数据库失败", e);

}

}

@Override

public
void
close(){

super.close();

}

4.  需要相应的数据Dao类,即数据访问接口.

public class EntityDao{

public List<Entity> findData(Dao<Entity, Integer> Entitydao,
int id) throws SQLException{

HashMap<String, Object> EntityMap = new HashMap<String, Object>();

userguideMap.put("id", id);

List<Entity> EntityLists = entityDao.queryForFieldValues(EntityMap);

return EntityLists ==
null
? null : EntityLists;

}

public
void
addEntity(Dao<Entity, Integer> entityDao, String string)
throws
SQLException{

Entity Entity =new Entity(string);

entityDao.create(Entity);

}

}

5.  调用

ormlite有两种使用方法,一种是继承对应的OrmLiteBaseActivity.但像xxxx Activity本身必须继承BaseActivity,这样就必须使用另外一种方法:在activity中添加一个获取helper的方法,还有在onDestroy中添加及时关闭helper的方法。

private DataHelper
dataHelper = null;

private DataHelper getHelper() {

if (dataHelper ==
null) {

dataHelper = OpenHelperManager.getHelper(this, DataHelper.class);

}

return
dataHelper;

}

@Override

protected
void
onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

if (dataHelper !=
null) {

OpenHelperManager.releaseHelper();

dataHelper = null;

}

}

其中数据库操作实现代码如下:

EntityDao dao = new EntityDao();

try {

Dao<Entity, Integer> dataDao = getHelper().getDataDao();

//查找操作调用

List<Entity> simpledataList = dao.findData(dataDao, 1);

//添加操作调用

dao.addEntity(dataDao,"demotest");

} catch (SQLException
e) {

e.printStackTrace();

}

http://my.oschina.net/HandyWorkGroup/blog/77473

android数据库持久化框架, ormlite框架,的更多相关文章

  1. android数据库持久化框架

    android数据库持久化框架

  2. [BUG集] android 安卓项目中ORMLITE框架 Must specify one of id, generatedId, and generatedIdSequence with Id

    使用ORM框架ORMLITE有一段时间,今天在操作一个对象的时候,重新运行报错如下: Must specify one of id, generatedId, and generatedIdSeque ...

  3. Android 快速开发系列 ORMLite 框架最佳实践

    比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...

  4. Android 快速开发系列 ORMLite 框架最佳实践之实现历史记录搜索

    首先在build.gald中添加compile 'com.j256.ormlite:ormlite-android:4.48'的引用 compile 'com.j256.ormlite:ormlite ...

  5. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  6. Android数据库框架-ORMLite

    参考资料 Android ORMLite 框架的入门用法 Android 快速开发系列 ORMLite 框架最佳实践 添加依赖 compile 'com.j256.ormlite:ormlite-an ...

  7. Android ORMLite 框架的入门用法

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  8. 【光速使用开源框架系列】数据库框架OrmLite

    [关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会 ...

  9. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

随机推荐

  1. CSS3盒子模型

    web前端必须了解的CSS3盒子模型 1.需要了解的属性以及属性值 display:box或者display:inline-box box-orient:horizontal | vertical ( ...

  2. Dubbo 新编程模型之外部化配置

    外部化配置(External Configuration) 在Dubbo 注解驱动例子中,无论是服务提供方,还是服务消费方,均需要转配相关配置Bean: @Bean public Applicatio ...

  3. 46个Linux面试常见问题送给你

    问题一: 绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案:绝对路径: 如/etc/init.d当前目录和上层目录: ./  ../主目录: ~/切 ...

  4. js中实现继承的不同方式以及其缺点

    1.利用call和apply,借助构造函数 fucntion P(){ this.name = "P"; } fucntion C1(){ P.call(this); } 解释一下 ...

  5. [.NET Core] 简单读取 json 配置文件

    简单读取 json 配置文件 背景 目前发现网上的 .NET Core 读取配置文件有点麻烦,自己想搞个简单点的. .NET Core 已经不使用之前的诸如 app.config 和 web.conf ...

  6. wso2ESB - 在eclipse中启用调试模式

    最近在使用wso2ESB,记录一下使用过程中碰到的坑,先写一篇调试的(前面的工具安装就不介绍了,既然想用调试了说明你已经看过一部分文档了),以后可能会介绍其他功能的使用. 在wso2 ei的文档中,介 ...

  7. javaScript执行环境、作用域链与闭包

    一.执行环境 执行环境定义了变量和函数有权访问的其他数据,决定了他们各自的行为:每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象 ...

  8. Servlet的监听器

    Listener是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionC ...

  9. MSIL实用指南-字段的加载和保存

    字段有静态字段和非静态字段之分,它们的加载保存指令也是不一样的,并且非静态字段要生成this. 静态字段的加载加载静态字段的指令是Ldsfld.ilGenerator.Emit(OpCodes.Lds ...

  10. js正则《转载收藏》

    \:转义字符.'\\n'匹配\n ^:开始位置.'^[0-9]'匹配以数字开头的字符,可以匹配'88DC',不可匹配'DC88' $:结束位置.'[0-9]$'匹配以数字结尾的字符,可以匹配'ab12 ...