codecamp

鸿蒙OS 对象关系映射数据库概述

HarmonyOS 对象关系映射(Object Relational Mapping,ORM)数据库是一款基于 SQLite 的数据库框架,屏蔽了底层 SQLite 数据库的 SQL 操作,针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的 SQL 语句, 以操作对象的形式来操作数据库,提升效率的同时也能聚焦于业务开发。

基本概念

  • 对象关系映射数据库的三个主要组件

  • 数据库:被开发者用 @Database 注解,且继承了 OrmDatabase 的类,对应关系型数据库。
  • 实体对象:被开发者用 @Entity 注解,且继承了 OrmObject 的类,对应关系型数据库中的表。
  • 对象数据操作接口:包括数据库操作的入口 OrmContext 类和谓词接口(OrmPredicate)等。

  • 谓词

数据库中是用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。对象关系映射数据库将 SQLite 数据库中的谓词封装成了接口方法供开发者调用。开发者通过对象数据操作接口,可以访问到应用持久化的关系型数据。

  • 对象关系映射数据库

通过将实例对象映射到关系上,实现使用操作实例对象的语法,来操作关系型数据库。它是在 SQLite 数据库的基础上提供的一个抽象层。

  • SQLite 数据库

一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统。

运作机制

对象关系映射数据库操作是基于关系型数据库操作接口完成的,实际是在关系型数据库操作的基础上又实现了对象关系映射等特性。因此对象关系映射数据库跟关系型数据库一样,都使用 SQLite 作为持久化引擎,底层使用的是同一套数据库连接池和数据库连接机制。

使用对象关系映射数据库的开发者需要先配置实体模型与关系映射文件。应用数据管理框架提供的类生成工具会解析这些文件,生成数据库帮助类,这样应用数据管理框架就能在运行时,根据开发者的配置创建好数据库,并在存储过程中自动完成对象关系映射。开发者再通过对象数据操作接口,如 OrmContext 接口和谓词接口等操作持久化数据库。

对象数据操作接口提供一组基于对象映射的数据操作接口,实现了基于 SQL 的关系模型数据到对象的映射,让用户不需要再和复杂的 SQL 语句打交道,只需简单地操作实体对象的属性和方法。对象数据操作接口支持对象的增删改查操作,同时支持事务操作等。

图1 对象关系映射数据库运作机制 点击放大

默认配置

  • 如果不指定数据库的日志模式,那么系统默认日志方式是 WAL(Write Ahead Log)模式。
  • 如果不指定数据库的落盘模式,那么系统默认落盘方式是 FULL模式。
  • HarmonyOS 数据库使用的共享内存默认大小是 2MB。

约束与限制

HarmonyOS 对象关系映射数据库是建立在 HarmonyOS 关系型数据库的基础之上的,所以关系型数据库的一些约束与限制请参考约束与限制

此外当开发者建立实体对象类时,对象属性的类型可以在下表的类型中选择。不支持使用自定义类型。

类型名称 描述 初始值
Integer 封装整型 null
int 整型 0
Long 封装长整型 null
long 长整型 0L
Double 封装双精度浮点型 null
double 双精度浮点型 0
Float 封装单精度浮点型 null
float 单精度浮点型 0
Short 封装短整型 null
short 短整型 0
String 字符串型 null
Boolean 封装布尔型 null
boolean 布尔型 0
Byte 封装字节型 null
byte 字节型 0
Character 封装字符型 null
char 字符型 ' '
Date 日期类 null
Time 时间类 null
Timestamp 时间戳类 null
Calendar 日历类 null
Blob 二进制大对象 null
Clob 字符大对象 null
鸿蒙OS 对象关系映射数据库开发指导
鸿蒙OS 对象关系映射数据库开发指导
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }