鴻蒙OS 對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)概述

2020-09-18 16:03 更新

HarmonyOS 對(duì)象關(guān)系映射(Object Relational Mapping,ORM)數(shù)據(jù)庫(kù)是一款基于 SQLite 的數(shù)據(jù)庫(kù)框架,屏蔽了底層 SQLite 數(shù)據(jù)庫(kù)的 SQL 操作,針對(duì)實(shí)體和關(guān)系提供了增刪改查等一系列的面向?qū)ο蠼涌?。?yīng)用開(kāi)發(fā)者不必再去編寫復(fù)雜的 SQL 語(yǔ)句, 以操作對(duì)象的形式來(lái)操作數(shù)據(jù)庫(kù),提升效率的同時(shí)也能聚焦于業(yè)務(wù)開(kāi)發(fā)。

基本概念

  • 對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)的三個(gè)主要組件

  • 數(shù)據(jù)庫(kù):被開(kāi)發(fā)者用 @Database 注解,且繼承了 OrmDatabase 的類,對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)。
  • 實(shí)體對(duì)象:被開(kāi)發(fā)者用 @Entity 注解,且繼承了 OrmObject 的類,對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)中的表。
  • 對(duì)象數(shù)據(jù)操作接口:包括數(shù)據(jù)庫(kù)操作的入口 OrmContext 類和謂詞接口(OrmPredicate)等。

  • 謂詞

數(shù)據(jù)庫(kù)中是用來(lái)代表數(shù)據(jù)實(shí)體的性質(zhì)、特征或者數(shù)據(jù)實(shí)體之間關(guān)系的詞項(xiàng),主要用來(lái)定義數(shù)據(jù)庫(kù)的操作條件。對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)將 SQLite 數(shù)據(jù)庫(kù)中的謂詞封裝成了接口方法供開(kāi)發(fā)者調(diào)用。開(kāi)發(fā)者通過(guò)對(duì)象數(shù)據(jù)操作接口,可以訪問(wèn)到應(yīng)用持久化的關(guān)系型數(shù)據(jù)。

  • 對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)

通過(guò)將實(shí)例對(duì)象映射到關(guān)系上,實(shí)現(xiàn)使用操作實(shí)例對(duì)象的語(yǔ)法,來(lái)操作關(guān)系型數(shù)據(jù)庫(kù)。它是在 SQLite 數(shù)據(jù)庫(kù)的基礎(chǔ)上提供的一個(gè)抽象層。

  • SQLite 數(shù)據(jù)庫(kù)

一款輕型的數(shù)據(jù)庫(kù),是遵守 ACID 的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。

運(yùn)作機(jī)制

對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)操作是基于關(guān)系型數(shù)據(jù)庫(kù)操作接口完成的,實(shí)際是在關(guān)系型數(shù)據(jù)庫(kù)操作的基礎(chǔ)上又實(shí)現(xiàn)了對(duì)象關(guān)系映射等特性。因此對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)跟關(guān)系型數(shù)據(jù)庫(kù)一樣,都使用 SQLite 作為持久化引擎,底層使用的是同一套數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)庫(kù)連接機(jī)制。

使用對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)的開(kāi)發(fā)者需要先配置實(shí)體模型與關(guān)系映射文件。應(yīng)用數(shù)據(jù)管理框架提供的類生成工具會(huì)解析這些文件,生成數(shù)據(jù)庫(kù)幫助類,這樣應(yīng)用數(shù)據(jù)管理框架就能在運(yùn)行時(shí),根據(jù)開(kāi)發(fā)者的配置創(chuàng)建好數(shù)據(jù)庫(kù),并在存儲(chǔ)過(guò)程中自動(dòng)完成對(duì)象關(guān)系映射。開(kāi)發(fā)者再通過(guò)對(duì)象數(shù)據(jù)操作接口,如 OrmContext 接口和謂詞接口等操作持久化數(shù)據(jù)庫(kù)。

對(duì)象數(shù)據(jù)操作接口提供一組基于對(duì)象映射的數(shù)據(jù)操作接口,實(shí)現(xiàn)了基于 SQL 的關(guān)系模型數(shù)據(jù)到對(duì)象的映射,讓用戶不需要再和復(fù)雜的 SQL 語(yǔ)句打交道,只需簡(jiǎn)單地操作實(shí)體對(duì)象的屬性和方法。對(duì)象數(shù)據(jù)操作接口支持對(duì)象的增刪改查操作,同時(shí)支持事務(wù)操作等。

圖1 對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)運(yùn)作機(jī)制 點(diǎn)擊放大

默認(rèn)配置

  • 如果不指定數(shù)據(jù)庫(kù)的日志模式,那么系統(tǒng)默認(rèn)日志方式是 WAL(Write Ahead Log)模式。
  • 如果不指定數(shù)據(jù)庫(kù)的落盤模式,那么系統(tǒng)默認(rèn)落盤方式是 FULL模式。
  • HarmonyOS 數(shù)據(jù)庫(kù)使用的共享內(nèi)存默認(rèn)大小是 2MB。

約束與限制

HarmonyOS 對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)是建立在 HarmonyOS 關(guān)系型數(shù)據(jù)庫(kù)的基礎(chǔ)之上的,所以關(guān)系型數(shù)據(jù)庫(kù)的一些約束與限制請(qǐng)參考約束與限制。

此外當(dāng)開(kāi)發(fā)者建立實(shí)體對(duì)象類時(shí),對(duì)象屬性的類型可以在下表的類型中選擇。不支持使用自定義類型。

類型名稱 描述 初始值
Integer 封裝整型 null
int 整型 0
Long 封裝長(zhǎng)整型 null
long 長(zhǎng)整型 0L
Double 封裝雙精度浮點(diǎn)型 null
double 雙精度浮點(diǎn)型 0
Float 封裝單精度浮點(diǎn)型 null
float 單精度浮點(diǎn)型 0
Short 封裝短整型 null
short 短整型 0
String 字符串型 null
Boolean 封裝布爾型 null
boolean 布爾型 0
Byte 封裝字節(jié)型 null
byte 字節(jié)型 0
Character 封裝字符型 null
char 字符型 ' '
Date 日期類 null
Time 時(shí)間類 null
Timestamp 時(shí)間戳類 null
Calendar 日歷類 null
Blob 二進(jìn)制大對(duì)象 null
Clob 字符大對(duì)象 null
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)