1. C++綁定(c++ binding)
C++綁定通過引入具有持久和臨" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 信息時(shí)代 > ODMG語言綁定(數(shù)據(jù)庫)

ODMG語言綁定(數(shù)據(jù)庫)

時(shí)間:2022-11-04 12:30:01 | 來源:信息時(shí)代

時(shí)間:2022-11-04 12:30:01 來源:信息時(shí)代

    ODMG語言綁定 : 說明對(duì)象定義語言/對(duì)象操作語言的結(jié)構(gòu)如何映射到編程語言結(jié)構(gòu)。ODMG目前支持與C++,Java和Smalltalk語言的綁定。
1. C++綁定(c++ binding)
C++綁定通過引入具有持久和臨時(shí)實(shí)例的類集合把對(duì)象模型映射到C++中,這些類稱為可持久化類(persistence-capable classes),包括五個(gè)部分的內(nèi)容:
(1) ODMG對(duì)象模型到C++的映射: 一個(gè)ODMG的對(duì)象類型映射為C++的一個(gè)類,對(duì)象模型的結(jié)構(gòu)概念映射為C++的構(gòu)造結(jié)構(gòu)或嵌入在某個(gè)類中的類。ODMG對(duì)象模型包含集合類型產(chǎn)生器、集合類型和集合實(shí)例,集合類型產(chǎn)生器映射為C++的模板類,集合類型映射為集合類,集合實(shí)例映射為這些集合類的實(shí)例。ODMG的數(shù)組集合映射為C++的d_Varray類,C++不直接支持關(guān)系,但通過提供維護(hù)關(guān)系的特定模板類的實(shí)例來實(shí)現(xiàn),類d_Extent〈T〉提供一個(gè)可持久化類T的范圍接口,C++不支持鍵的聲明。
(2) C++ODL: C++與ODL的綁定被表示為類庫和對(duì)標(biāo)準(zhǔn)C++類定義機(jī)制的擴(kuò)展,類庫提供在ODMG對(duì)象模型中定義概念的類和函數(shù)。C++ODL提供數(shù)據(jù)庫模式的描述,把數(shù)據(jù)庫模式描述為一個(gè)包含屬性、關(guān)系和操作的對(duì)象類的集合,其風(fēng)格與C++程序中聲明部分一致,這些類的實(shí)例可以通過C++OML操作。在C++類庫中,凡是實(shí)現(xiàn)與ODMG對(duì)象模型接口的特性都以d為前綴,如基本數(shù)據(jù)類型d_String,d_Short,集合類型d_List、d_Set、d_Bag,對(duì)應(yīng)Iterator類的d_Iterator,對(duì)應(yīng)extent類的d Extent,對(duì)應(yīng)事務(wù)的d_Trancaction以及對(duì)應(yīng)數(shù)據(jù)庫的d Database等,并且還為數(shù)據(jù)庫模式中的每一個(gè)類T定義了一個(gè)模板d_Ref(T),它涉及類T的持久對(duì)象和臨時(shí)對(duì)象。關(guān)系通過包含一個(gè)引用(一對(duì)一關(guān)系)或一個(gè)集合(一對(duì)多關(guān)系)來處理,操作說明與標(biāo)準(zhǔn)C++語言函數(shù)說明基本一致。
(3) C++OML:對(duì)象操縱語言(OML)用來說明在應(yīng)用程序中如何檢索和操作數(shù)據(jù)對(duì)象,C++OML所表達(dá)的語法和語義與標(biāo)準(zhǔn)類庫的語境中標(biāo)準(zhǔn)C++的語法和語義相同,C++OML包括對(duì)象的創(chuàng)建、刪除、修改和引用。
對(duì)于對(duì)象操縱語言,new算子被重載使其可以創(chuàng)建持久或臨時(shí)對(duì)象。為了創(chuàng)建一個(gè)持久對(duì)象,必須提供數(shù)據(jù)庫名和一個(gè)對(duì)象名。對(duì)象刪除通過調(diào)用d_Ref:delete object()成員函數(shù)進(jìn)行,對(duì)象的修改則調(diào)用函數(shù)d_object:mark_modified()進(jìn)行,對(duì)象引用是模板類d Ref<T>的實(shí)例,其他對(duì)對(duì)象特性的訪問如屬性、關(guān)系、操作等與標(biāo)準(zhǔn)C++語言基本一致。
(4) C++OQL:C++OQL把對(duì)象查詢語言的語義映射成C++語言。在C++ODL/OML程序中的對(duì)象查詢語言的查詢可以通過下列方法執(zhí)行: 一是使用類d_Collection 的成員函數(shù)query;二是使用d_OQL_Query接口。
(5)模式訪問: 描述通過一個(gè)C++類庫訪問ODMG數(shù)據(jù)庫模式的接口,模式信息是基于對(duì)象模型中描述的元數(shù)據(jù)。C++的模式定義在有些方面不同于ODL中的獨(dú)立于語言、抽象的模式說明,為使模式訪問遵循C++程序設(shè)計(jì)常規(guī),提供給C++程序員直觀的API,在API中包含C++ODL擴(kuò)展,使其是ODMG ODL的一個(gè)超集。模式訪問API被結(jié)構(gòu)化為一個(gè)面向?qū)ο蟮目蚣?只有操縱元信息的內(nèi)部函數(shù)被定義,而不是定義所有的類結(jié)構(gòu)和詳細(xì)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。ODMS實(shí)現(xiàn)可以選擇模式數(shù)據(jù)庫的實(shí)際物理表示,ODL模式列出描述模式的所有類,使用ODL關(guān)系表達(dá)這些類之間的關(guān)系。圖1是具體的C++綁定的實(shí)現(xiàn)示意圖。


圖1 C++語言綁定的實(shí)現(xiàn)


為創(chuàng)建一個(gè)可執(zhí)行應(yīng)用程序,C++對(duì)象定義語言聲明傳給C++對(duì)象定義語言預(yù)處理器,這個(gè)處理器的功能是產(chǎn)生一個(gè)包含對(duì)象數(shù)據(jù)庫定義并存儲(chǔ)對(duì)象數(shù)據(jù)管理系統(tǒng)元數(shù)據(jù)的C++頭文件,然后含有對(duì)象操縱語言的C++用戶程序與已經(jīng)產(chǎn)生的含有對(duì)象數(shù)據(jù)庫定義的C++頭文件一起進(jìn)行編譯,最后將編譯器輸出的對(duì)象代碼與對(duì)象數(shù)據(jù)管理系統(tǒng)運(yùn)行庫鏈接,產(chǎn)生所要的可執(zhí)行映像。ODL/OML只是指明對(duì)象的邏輯特征和用來操縱它們的操作,不涉及對(duì)象的物理存儲(chǔ),以及與對(duì)象存儲(chǔ)的物理表示相聯(lián)系的簇集或內(nèi)存管理問題。
2. Smalltalk綁定(smalltalk binding)
Smalltalk綁定把ODMG對(duì)象模型映射成Smalltalk語言,它是基于OMG的Smalltalk的接口定義語言實(shí)現(xiàn)綁定的。綁定可以由處理ODL聲明和生成元對(duì)象圖的一個(gè)ODL編譯器自動(dòng)實(shí)現(xiàn),并構(gòu)成數(shù)據(jù)庫的模式。這些元對(duì)象提供類型信息以允許Smalltalk綁定支持所需的ODL類型語義,這些元對(duì)象的全體集合定義數(shù)據(jù)庫的全部模式并提供與OMG接口庫同樣的服務(wù)能力。表達(dá)數(shù)據(jù)庫模式的元對(duì)象可以由Smalltalk應(yīng)用程序通過它們的標(biāo)準(zhǔn)接口編程訪問和修改,這樣的應(yīng)用程序,又稱為一個(gè)綁定生成器,可用來從元對(duì)象中生成Smalltalk類和方法框架,該綁定生成器將解決與ODMG的Smalltalk綁定相關(guān)的類型-類映射選擇問題。元對(duì)象對(duì)再生成ODL聲明也提供了足夠的信息。上述實(shí)現(xiàn)Smalltalk語言綁定的構(gòu)件之間的關(guān)系如圖2所示。


圖2 Smalltalk語言綁定的實(shí)現(xiàn)


3. Java綁定(java binding)
Java綁定提供兩種方式聲明可持久化的Java類: 已存在的Java類可以轉(zhuǎn)換成可持久化類; Java類聲明(數(shù)據(jù)庫模式也一樣)可以由ODMG ODL的預(yù)處理器自動(dòng)產(chǎn)生。支持上述能力的ODMG實(shí)現(xiàn)方法有三種: 一是采用后處理器(post-processor),該處理方式把由Java編譯器產(chǎn)生的Java.class文件作為輸入,并產(chǎn)生新的支持持久性的修改后的字節(jié)碼;二是采用預(yù)處理器(pre-processor),該處理方式在Java源代碼進(jìn)入Java編譯器之前修改代碼; 三是修改Java解釋器。因?yàn)镴ava語言本身并不具有可以實(shí)現(xiàn)上述綁定方式的全部功能,且Java綁定必須使用標(biāo)準(zhǔn)的Java語法,所以有必要區(qū)分由數(shù)據(jù)庫系統(tǒng)使用的稱為可持久化類的特殊類,這些類具有持久和臨時(shí)實(shí)例,只有這些類的實(shí)例可以持久化。同時(shí)因?yàn)橐粋€(gè)Java類定義并不包含全部的對(duì)象模型信息,因此有必要在類定義中增加特性文件,以說明該類是可持久化類。Java綁定的具體內(nèi)容與C++綁定和Smalltalk綁定基本相同,也是把ODMG對(duì)象模型映射成Java語言。
在ODMG綁定的程序設(shè)計(jì)語言的選擇方面,基本規(guī)則是具體的與ODMG綁定的程序設(shè)計(jì)語言應(yīng)是一個(gè)單獨(dú)的統(tǒng)一類型系統(tǒng),該語言應(yīng)能跨越程序設(shè)計(jì)語言和數(shù)據(jù)庫,且需遵守基本程序設(shè)計(jì)語言的語法和語義。

74
73
25
news

版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉