您好,登錄后才能下訂單哦!
SDO for Java規范(一)——架構
數據對象是SDO框架的核心。數據對象是一個業務對象的一般表達,并且沒有和特殊的持久化存儲機制綁定。
數據圖是一個相關數據對象的集合。在SDO1.0里,一個數據圖總是被一個DataGraph信封對象所包裝,而在SDO2.0里,數據對象圖可以存在于DataGraph之外。(數據圖)Data graph作為兩個單詞分開使用時,指任何一個數據對象集合;(數據圖)DataGraph作為一個單一單詞使用時,特指一個DataGraph信封對象。
所有數據圖都有一個單一的根數據對象,它直接或間接的包含圖里的所有其它數據對象。當的數據圖里的所有數據對象僅僅引用自身的數據對象時,我們稱該數據圖是封閉的。封閉是一個數據圖的標準狀態。
一個數據圖由以下組成:
一個封閉的數據圖形成了一個數據對象的樹形結構。數據圖能夠記錄跟蹤描述數據對象的模式。數據圖同樣也可以維護一個更改概要(ChangeSummary),ChangeSummary表達了施加于該圖數據對象之上的更改。
圖1,數據圖包含數據對象
對于終端用戶而言,訪問數據圖的標準方式是通過數據訪問服務(DAS)。DAS提供了從庫中加載數據圖和將數據圖保存回庫中的方法。例如,一個XML文件DAS將加載和保存一個數據圖為XML文件,一個JDBC DAS將使用一個關系數據庫加載和保存一個數據圖。針對其它特殊的DAS的規范超出了本規范的范圍。
經典的DAS使用了一個非連接的數據架構,客戶端除了在讀寫數據圖時,均和DAS保持一個非連接的狀態。因而,一個使用數據圖的典型場景涉及以下步驟:
圖2 SDO的非連接數據結構
注意有兩個特別的角色能夠能夠用來區分數據對象用戶:客戶和DAS writer。
客戶需要能夠縱覽整個數據圖去訪問每一個數據對象并且能夠獲取和設置每一個數據對象域的能力。客戶也需要序列化和反序列化一個數據圖。如使用XML DAS時,數據圖能夠被序列化一個XML。
DAS writer必須能夠為數據圖定義一個模型,創建一個新的數據圖,產生更改歷史信息,并且能夠訪問更改歷史信息。
一個數據圖包含一個(更改概要)ChangeSummary,通過ChangeSummary,能夠訪問數據圖中任何一個數據對象的更改歷史。當DAS返回一個數據圖時,ChangeSummary應該是空的。如果DAS的客戶修改了數據對象的狀態,例如創建或者刪除,這些更改的概要將被記錄在ChangeSummary中。
如果一個客戶端將一個修改后的數據圖發送給DAS,DAS將會進行數據圖的錯誤性檢查,這些錯誤主要包括數據圖是否缺少封閉,屬性值是否越界,由樹形子圖生成的屬性或數據對象的選擇,不同的約束或者任何針對DAS的特殊限制(如XML模式的特殊校驗)。這里,封閉(Closure)指任何一個該數據圖的數據對象的引用均指向自身內部的一個對象。通常,DAS使用異常報告更新的問題。
一個數據圖可能沒有封閉,此時,終端用戶可以臨時通過數據對象接口修改該數據圖所包含的數據對象。然而在所有的用戶操作完成后,數據圖將重建一個封閉。DAS只能操作帶有封閉的數據圖。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。