正文  数据库 > 数据库/SQLite >

Android中OrmLite持久化

OrmLite提供了一些轻量级持久化Java对象到SQL数据库,同时 也避免了复杂性和更多的标准的ORM包的开销功能。它支持的SQL数据库使用JDBC的数量,还支持原生的Android操作系统数据库API调用 sqlite。首先我们要使......

OrmLite提供了一些轻量级持久化Java对象到SQL数据库,同时 也避免了复杂性和更多的标准的ORM包的开销功能。它支持的SQL数据库使用JDBC的数量,还支持原生的Android操作系统数据库API调用 sqlite。首先我们要使用它呢,就要去它的官方http://ormlite.com下载你想要的版本,这里我下载了最新的4.30。接下来我们来写 一个简单的项目,同时对它的使用方法进行一个详细的介绍。

  建立好项目后呢,我们加入OrmLite的jar包,然后建立两个实体类,我用的例子是客户和订单,一个客户对应多个订单这样的关系。

 

 

Android中如何使用OrmLite持久化

 


  接着为这两个实体类添加属性和字段,需要注意的是,一定要有一个无参的构造函数,OrmLite创建对象时需要使用。

 

  Account: int aId,String aName;Order:int oid,String oName,Account account。

  接着就到了添加ORMLite注解了。注解是特殊的代码标志已在 Java版本开始,要指定什么类和字段存储在数据库中,ORMLite支持其自己的注解(@ DatabaseTable @ DatabaseField)或更多的标准注解从javax.persistence包。注解是最简单的方法来配置你的类,但你也可以使用Java代码或 Spring的XML配置类 。以下是注解的详细介绍:

  @ DatabaseTable注解可以有一个可选的TableName的参数指定类对应的表的名称。如果没有指定表名的情况下,默认情况下使用类名作为对应的表名。例如:

  @DatabaseTable(tableName = accounts)

  public class Account {...} 像这样的话,Account类对应的表名就是accounts,如果不指定则为account。

  @ DatabaseField注解可以有以下字段:

  columnName 列名,未指定时为字段名

  dataType DataType类的类型的字段。通常的类型是从Java类的领域,并不需要指定。

  defaultValue 默认值

  width 宽度 默认是0,表示不限

  canBeNull 是否允许为空,默认为true

  id 主键 默认为false

  generatedId 自增长的主键 默认值是false

  generatedIdSequence 字符串名称的序列号 类同generatedId,但您可以指定序列的名称使用。默认为null

  foreign 外键,默认为false,字段不能是一个原始类型。在外键对象的类中,必须要有一个ID字段(ID, generatedId,generatedIdSequence)

  useGetSet 应用get和set方法访问。默认为false

  unknownEnumName 表示该字段是一个Java的枚举类型

  throwIfNull 如果为空值,抛出一个异常 默认为false

  persisted 是否在数据库中存储这个领域 默认为true

  format 指定某一特定领域的信息格式,如指定日期字符串的格式

  unique 唯一约束,默认为false

  uniqueCombo 唯一行,该行内所有字段成为一个唯一约束,如有firstName 和 lastName两个字段,为张和梅,那么该表内不可再插 入张,梅, 但你可插入张,全梅。

  index 是否建立索引 默认为false

  uniqueIndex 唯一索引 默认为false

  indexName 为这一领域的索引添加一个名字

  uniqueIndexName 为这一领域的索引添加一个唯一的名字

  foreignAutoRefresh 当查询到一个外键对象时,是否自动刷新 如 Order表中有Account外键对象,当返回Order的记录时是否也返回Account的记录, 默认为false

  maxForeignAutoRefreshLevel 为了防止无限递归或者无限循环时 需要用到该属性设置自动刷新的最高级别

  allowGeneratedIdInsert 插入一个ID字段是否覆盖它生成的ID的对象 默认为false

  columnDefinition 定义列,默认情况下,数据库类型是用于自动生成所需的SQL来创建列,所以该属性并不常用

  foreignAutoCreate 在插入一个有外键对象的对象时,是否自动插入这个外键对象

  version 行版本 当一个对象被更新,以防止数据损坏多个实体时更新在同一时间进行的保护