溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SDO for Java規(guī)范(一)——架構(gòu)

發(fā)布時(shí)間:2020-08-19 00:05:10 來源:ITPUB博客 閱讀:239 作者:94nidaye 欄目:編程語言
作者 高科技文盲[@more@]

SDO for Java規(guī)范(一)——架構(gòu)

數(shù)據(jù)對(duì)象是SDO框架的核心。數(shù)據(jù)對(duì)象是一個(gè)業(yè)務(wù)對(duì)象的一般表達(dá),并且沒有和特殊的持久化存儲(chǔ)機(jī)制綁定。

數(shù)據(jù)圖是一個(gè)相關(guān)數(shù)據(jù)對(duì)象的集合。在SDO1.0里,一個(gè)數(shù)據(jù)圖總是被一個(gè)DataGraph信封對(duì)象所包裝,而在SDO2.0里,數(shù)據(jù)對(duì)象圖可以存在于DataGraph之外。(數(shù)據(jù)圖)Data graph作為兩個(gè)單詞分開使用時(shí),指任何一個(gè)數(shù)據(jù)對(duì)象集合;(數(shù)據(jù)圖)DataGraph作為一個(gè)單一單詞使用時(shí),特指一個(gè)DataGraph信封對(duì)象。

所有數(shù)據(jù)圖都有一個(gè)單一的根數(shù)據(jù)對(duì)象,它直接或間接的包含圖里的所有其它數(shù)據(jù)對(duì)象。當(dāng)?shù)臄?shù)據(jù)圖里的所有數(shù)據(jù)對(duì)象僅僅引用自身的數(shù)據(jù)對(duì)象時(shí),我們稱該數(shù)據(jù)圖是封閉的。封閉是一個(gè)數(shù)據(jù)圖的標(biāo)準(zhǔn)狀態(tài)。

一個(gè)數(shù)據(jù)圖由以下組成:

  • 一個(gè)單一的根數(shù)據(jù)對(duì)象。
  • 通過對(duì)根數(shù)據(jù)對(duì)象屬性的遞歸檢索到的所有可達(dá)的數(shù)據(jù)對(duì)象。

一個(gè)封閉的數(shù)據(jù)圖形成了一個(gè)數(shù)據(jù)對(duì)象的樹形結(jié)構(gòu)。數(shù)據(jù)圖能夠記錄跟蹤描述數(shù)據(jù)對(duì)象的模式。數(shù)據(jù)圖同樣也可以維護(hù)一個(gè)更改概要(ChangeSummary),ChangeSummary表達(dá)了施加于該圖數(shù)據(jù)對(duì)象之上的更改。

SDO for Java規(guī)范(一)——架構(gòu)

1,數(shù)據(jù)圖包含數(shù)據(jù)對(duì)象

對(duì)于終端用戶而言,訪問數(shù)據(jù)圖的標(biāo)準(zhǔn)方式是通過數(shù)據(jù)訪問服務(wù)(DAS)。DAS提供了從庫中加載數(shù)據(jù)圖和將數(shù)據(jù)圖保存回庫中的方法。例如,一個(gè)XML文件DAS將加載和保存一個(gè)數(shù)據(jù)圖為XML文件,一個(gè)JDBC DAS將使用一個(gè)關(guān)系數(shù)據(jù)庫加載和保存一個(gè)數(shù)據(jù)圖。針對(duì)其它特殊的DAS的規(guī)范超出了本規(guī)范的范圍。

經(jīng)典的DAS使用了一個(gè)非連接的數(shù)據(jù)架構(gòu),客戶端除了在讀寫數(shù)據(jù)圖時(shí),均和DAS保持一個(gè)非連接的狀態(tài)。因而,一個(gè)使用數(shù)據(jù)圖的典型場(chǎng)景涉及以下步驟:

  • 終端用戶發(fā)送一個(gè)加載數(shù)據(jù)圖的請(qǐng)求給DAS。
  • DAS啟動(dòng)一個(gè)持久庫上的事務(wù)去接收數(shù)據(jù),創(chuàng)建一個(gè)表達(dá)該數(shù)據(jù)的數(shù)據(jù)圖,并且結(jié)束這個(gè)事務(wù)。
  • DAS返回一個(gè)數(shù)據(jù)圖給一個(gè)終端用戶應(yīng)用。
  • 終端用戶應(yīng)用處理數(shù)據(jù)圖。
  • 終端用戶應(yīng)用使用修改后的數(shù)據(jù)圖調(diào)用DAS。
  • DAS基于終端用戶對(duì)數(shù)據(jù)的修改,啟動(dòng)一個(gè)新的事務(wù)更新持久庫中的數(shù)據(jù)。

SDO for Java規(guī)范(一)——架構(gòu)

2 SDO的非連接數(shù)據(jù)結(jié)構(gòu)

注意有兩個(gè)特別的角色能夠能夠用來區(qū)分?jǐn)?shù)據(jù)對(duì)象用戶:客戶和DAS writer。

客戶需要能夠縱覽整個(gè)數(shù)據(jù)圖去訪問每一個(gè)數(shù)據(jù)對(duì)象并且能夠獲取和設(shè)置每一個(gè)數(shù)據(jù)對(duì)象域的能力??蛻粢残枰蛄谢头葱蛄谢粋€(gè)數(shù)據(jù)圖。如使用XML DAS時(shí),數(shù)據(jù)圖能夠被序列化一個(gè)XML。

DAS writer必須能夠?yàn)閿?shù)據(jù)圖定義一個(gè)模型,創(chuàng)建一個(gè)新的數(shù)據(jù)圖,產(chǎn)生更改歷史信息,并且能夠訪問更改歷史信息。

一個(gè)數(shù)據(jù)圖包含一個(gè)(更改概要)ChangeSummary,通過ChangeSummary,能夠訪問數(shù)據(jù)圖中任何一個(gè)數(shù)據(jù)對(duì)象的更改歷史。當(dāng)DAS返回一個(gè)數(shù)據(jù)圖時(shí),ChangeSummary應(yīng)該是空的。如果DAS的客戶修改了數(shù)據(jù)對(duì)象的狀態(tài),例如創(chuàng)建或者刪除,這些更改的概要將被記錄在ChangeSummary中。

如果一個(gè)客戶端將一個(gè)修改后的數(shù)據(jù)圖發(fā)送給DASDAS將會(huì)進(jìn)行數(shù)據(jù)圖的錯(cuò)誤性檢查,這些錯(cuò)誤主要包括數(shù)據(jù)圖是否缺少封閉,屬性值是否越界,由樹形子圖生成的屬性或數(shù)據(jù)對(duì)象的選擇,不同的約束或者任何針對(duì)DAS的特殊限制(如XML模式的特殊校驗(yàn))。這里,封閉(Closure)指任何一個(gè)該數(shù)據(jù)圖的數(shù)據(jù)對(duì)象的引用均指向自身內(nèi)部的一個(gè)對(duì)象。通常,DAS使用異常報(bào)告更新的問題。

一個(gè)數(shù)據(jù)圖可能沒有封閉,此時(shí),終端用戶可以臨時(shí)通過數(shù)據(jù)對(duì)象接口修改該數(shù)據(jù)圖所包含的數(shù)據(jù)對(duì)象。然而在所有的用戶操作完成后,數(shù)據(jù)圖將重建一個(gè)封閉。DAS只能操作帶有封閉的數(shù)據(jù)圖。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI