您好,登錄后才能下訂單哦!
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ù)圖形成了一個(gè)數(shù)據(jù)對(duì)象的樹形結(jié)構(gòu)。數(shù)據(jù)圖能夠記錄跟蹤描述數(shù)據(jù)對(duì)象的模式。數(shù)據(jù)圖同樣也可以維護(hù)一個(gè)更改概要(ChangeSummary),ChangeSummary表達(dá)了施加于該圖數(shù)據(jù)對(duì)象之上的更改。
圖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)景涉及以下步驟:
圖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ā)送給DAS,DAS將會(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ù)圖。
免責(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)容。