999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于復(fù)雜對(duì)象的數(shù)據(jù)快速訪問(wèn)方案的設(shè)計(jì)與實(shí)現(xiàn)*

2012-06-07 01:51:22周微民
艦船電子工程 2012年10期
關(guān)鍵詞:關(guān)聯(lián)數(shù)據(jù)庫(kù)用戶

周微民

(中國(guó)電子科技集團(tuán)公司第二十八研究所 南京 210007)

1 引言

目前的應(yīng)用軟件大多通過(guò)ODBC、JDBC、ADO、BDE等最原始、最直接的方法訪問(wèn)數(shù)據(jù)庫(kù),或是通過(guò)數(shù)據(jù)庫(kù)廠商提供的接口訪問(wèn)數(shù)據(jù)庫(kù),這些方式雖然運(yùn)行效率高,但是在程序中嵌入了大量的SQL語(yǔ)句,使得項(xiàng)目難以維護(hù)。如果關(guān)系數(shù)據(jù)模型非常復(fù)雜,直接寫SQL需要專業(yè)的知識(shí),對(duì)于企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)人員,從頭開(kāi)發(fā)自己的持久化層是不可行的。同時(shí)由于數(shù)據(jù)標(biāo)準(zhǔn)、規(guī)范的建設(shè)滯后于信息系統(tǒng)的發(fā)展,各個(gè)信息系統(tǒng)中的數(shù)據(jù)庫(kù)資源都存在著語(yǔ)義、結(jié)構(gòu)等方面的異構(gòu)性[1],因此需要對(duì)象關(guān)系映射層,把數(shù)據(jù)庫(kù)訪問(wèn)操作封裝起來(lái),提供統(tǒng)一的對(duì)象接口,供業(yè)務(wù)調(diào)用。

對(duì)象/關(guān)系映射技術(shù)有多種實(shí)現(xiàn),開(kāi)源項(xiàng)目有 Hibernate[2]、NHibernate[3]、Castle 框 架。Hibernate是 “對(duì) 象—關(guān)系映射(Object—Relational Mapping,ORM)模塊實(shí)現(xiàn)數(shù)據(jù)持久層的一個(gè)優(yōu)秀的Java組件。ORM元素主要功能是實(shí)現(xiàn)實(shí)體域?qū)ο蟮某志没⒎庋b[4]數(shù)據(jù)訪問(wèn)的細(xì)節(jié)。Hibernate對(duì)JDBC進(jìn)行了非常輕量級(jí)的封裝,其對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射,持久化,事務(wù)管理,緩存機(jī)制的功能很好,但是Hibernate在復(fù)雜多表聯(lián)合數(shù)據(jù)處理上的能力較弱;對(duì)于復(fù)雜的多表操作不適合用Hibernate。微軟NHibernate是基于Microsoft.NET的O/R Map2ping持久化框架。它從數(shù)據(jù)庫(kù)底層來(lái)持久化.Net對(duì)象到關(guān)系型數(shù)據(jù)庫(kù)。它不僅管理.NET類到數(shù)據(jù)庫(kù)表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法[5]。但是其中的對(duì)象也只是相對(duì)比較簡(jiǎn)單的主表和幾張子表之間關(guān)聯(lián)的對(duì)象,對(duì)象間的復(fù)雜關(guān)聯(lián)無(wú)法體現(xiàn)出來(lái)。Castle框架是針對(duì).NET平臺(tái)的一個(gè)非常優(yōu)秀的開(kāi)源項(xiàng)目,從數(shù)據(jù)訪問(wèn)框架ORM(Object2Relational Mapping,對(duì)象關(guān)系映射)到IOC(Inversion of Cont rol,控制反轉(zhuǎn)或者叫依賴注入)容器,再到WEB層的MVC框架,基本包括了整個(gè)開(kāi)發(fā)過(guò)程中的所有內(nèi)容,為開(kāi)發(fā)易擴(kuò)展、可伸縮、靈活、健壯的軟件系統(tǒng)提供了一個(gè)很好的平臺(tái)[6]。Castle封裝了NHibernate的大部分煩雜細(xì)節(jié),不需要像NHibernate那樣去編寫復(fù)雜的對(duì)象映射文件,配置少且靈活,但是無(wú)法支持大型系統(tǒng)復(fù)雜的數(shù)據(jù)庫(kù)邏輯。

針對(duì)上述不足,本文設(shè)計(jì)了復(fù)雜對(duì)象模型以及基于該對(duì)象模型的數(shù)據(jù)快速訪問(wèn)方案,采用這種方法進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā),將增強(qiáng)系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)能力和對(duì)軟件環(huán)境的適應(yīng)能力,當(dāng)系統(tǒng)更換底層數(shù)據(jù)庫(kù)系統(tǒng),或更改數(shù)據(jù)庫(kù)物理表和字段信息時(shí),只需修改對(duì)象和數(shù)據(jù)實(shí)體的映射關(guān)系,不會(huì)對(duì)系統(tǒng)產(chǎn)生大的影響。

2 方案設(shè)計(jì)

2.1 復(fù)雜對(duì)象模型構(gòu)建

為了屏蔽數(shù)據(jù)庫(kù),采用持久化技術(shù)。持久化技術(shù)的基本思想是以用面向?qū)ο蟮募夹g(shù)將數(shù)據(jù)庫(kù)關(guān)系表以及表中的記錄都看成是可以持久的對(duì)象。在這種技術(shù)中,首先可以利用面向?qū)ο蟮乃枷耄俺志没卑ê蛿?shù)據(jù)庫(kù)相關(guān)的各種操作,并建立其對(duì)象模型。例如,保存:把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫(kù);更新:更新數(shù)據(jù)庫(kù)中的域?qū)ο蟮臓顟B(tài);刪除:從數(shù)據(jù)庫(kù)中刪除一個(gè)域?qū)ο螅患虞d:根據(jù)特定的OID,把一個(gè)域?qū)ο髲臄?shù)據(jù)庫(kù)加載到內(nèi)存;查詢:根據(jù)特定的查詢條件,把符合查詢條件的一個(gè)或多個(gè)域?qū)ο髲臄?shù)據(jù)庫(kù)加載到內(nèi)存中[7]。本文根據(jù)持久化思想設(shè)計(jì)了業(yè)務(wù)對(duì)象模型。

業(yè)務(wù)對(duì)象模型是基于元數(shù)據(jù)庫(kù)的,元數(shù)據(jù)庫(kù)主要用于管理元數(shù)據(jù)。元數(shù)據(jù)是數(shù)據(jù)的組織、數(shù)據(jù)域以及關(guān)系的信息,也就是數(shù)據(jù)的數(shù)據(jù)[8]。元數(shù)據(jù)庫(kù)主要存儲(chǔ)了用戶需要訪問(wèn)數(shù)據(jù)的相關(guān)數(shù)據(jù)對(duì)象的描述信息,構(gòu)成數(shù)據(jù)庫(kù)邏輯視圖,其中數(shù)據(jù)庫(kù)結(jié)構(gòu)信息主要來(lái)源于數(shù)據(jù)字典,即數(shù)據(jù)庫(kù)中用于存儲(chǔ)數(shù)據(jù)庫(kù)對(duì)象結(jié)構(gòu)信息的專用表和視圖。

業(yè)務(wù)對(duì)象主要描述業(yè)務(wù)操作的數(shù)據(jù)訪問(wèn)視圖,以XML的方式展現(xiàn),具體內(nèi)容包括:

1)對(duì)象信息:對(duì)象類名稱、對(duì)象類描述、數(shù)據(jù)庫(kù)對(duì)象ID、對(duì)象狀態(tài)、對(duì)象類型;

2)對(duì)象關(guān)系映射信息:對(duì)象屬性信息、映射的數(shù)據(jù)庫(kù)信息;

3)對(duì)象關(guān)聯(lián)信息:對(duì)象內(nèi)部表間的關(guān)聯(lián)描述、對(duì)象間的關(guān)聯(lián)描述;

4)對(duì)象操作信息。增刪改查的命名SQL:SQL名稱、SQL描述、SQL中的參數(shù)描述(包括參數(shù)名稱、類型)、SQL的輸出字段別名名稱。級(jí)聯(lián)操作描述:在增加、修改、刪除記錄操作之前和之后執(zhí)行的各種命名SQL描述,SQL執(zhí)行順序號(hào)。

復(fù)雜對(duì)象是基于業(yè)務(wù)對(duì)象的,是簡(jiǎn)單業(yè)務(wù)對(duì)象間的關(guān)聯(lián)關(guān)系組合。簡(jiǎn)單業(yè)務(wù)對(duì)象間的關(guān)聯(lián)關(guān)系包括兩類:

1)如果一個(gè)簡(jiǎn)單業(yè)務(wù)對(duì)象A的刪、改、查操作的任一條件字段的值能夠包含在另一個(gè)簡(jiǎn)單業(yè)務(wù)對(duì)象B的查詢結(jié)果中,可以認(rèn)為B與A之間存在父子關(guān)系;

2)如果兩個(gè)簡(jiǎn)單業(yè)務(wù)對(duì)象A和A′,都是簡(jiǎn)單業(yè)務(wù)對(duì)象B的子對(duì)象,則可以認(rèn)為A和A′存在兄弟關(guān)系。

2.2 基于復(fù)雜對(duì)象的數(shù)據(jù)訪問(wèn)

對(duì)象化數(shù)據(jù)訪問(wèn)主要由業(yè)務(wù)對(duì)象和數(shù)據(jù)訪問(wèn)兩個(gè)部分組成。業(yè)務(wù)對(duì)象根據(jù)實(shí)際應(yīng)用的數(shù)據(jù)需求分為簡(jiǎn)單業(yè)務(wù)對(duì)象和復(fù)雜業(yè)務(wù)對(duì)象,主要存儲(chǔ)對(duì)象和數(shù)據(jù)庫(kù)表之間的映射關(guān)系;數(shù)據(jù)訪問(wèn)主要通過(guò)動(dòng)態(tài)加載業(yè)務(wù)對(duì)象來(lái)完成用戶對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的操作。

對(duì)象化數(shù)據(jù)訪問(wèn)的主要工作流程為:先抽取專業(yè)數(shù)據(jù)庫(kù)結(jié)構(gòu)到元數(shù)據(jù)庫(kù)中,形成數(shù)據(jù)庫(kù)邏輯視圖;再利用元數(shù)據(jù)庫(kù)生成簡(jiǎn)單業(yè)務(wù)對(duì)象,描述業(yè)務(wù)操作的數(shù)據(jù)訪問(wèn)視圖;然后分析生成的多個(gè)簡(jiǎn)單業(yè)務(wù)對(duì)象間的關(guān)聯(lián)關(guān)系,根據(jù)業(yè)務(wù)需要設(shè)置對(duì)象間的關(guān)聯(lián)關(guān)系生成復(fù)雜業(yè)務(wù)對(duì)象,描述業(yè)務(wù)流程的數(shù)據(jù)訪問(wèn)視圖;最后完成對(duì)象的數(shù)據(jù)訪問(wèn)。

2.2.1 業(yè)務(wù)對(duì)象的生成

業(yè)務(wù)對(duì)象是依托元數(shù)據(jù)庫(kù)的,所以要先構(gòu)建元數(shù)據(jù)庫(kù),然后再生成業(yè)務(wù)對(duì)象。

1)抽取元數(shù)據(jù)

根據(jù)數(shù)據(jù)模型的描述,從專業(yè)數(shù)據(jù)庫(kù)的數(shù)據(jù)字典讀取需要訪問(wèn)數(shù)據(jù)的相關(guān)數(shù)據(jù)對(duì)象(包括數(shù)據(jù)表、字段、約束等)的描述信息,存入元數(shù)據(jù)庫(kù)中,為業(yè)務(wù)對(duì)象的生成提供支持。主要步驟如下:

(1)讀取專業(yè)數(shù)據(jù)庫(kù)的連接信息;

(2)讀取專業(yè)數(shù)據(jù)庫(kù)里表的描述信息;

(3)讀取專業(yè)數(shù)據(jù)庫(kù)里表字段的描述信息;

(4)讀取專業(yè)數(shù)據(jù)庫(kù)里表的關(guān)聯(lián)信息;

(5)將專業(yè)數(shù)據(jù)庫(kù)的元數(shù)據(jù)描述信息存入元數(shù)據(jù)庫(kù),供生成業(yè)務(wù)對(duì)象時(shí)使用。

該操作需要了解數(shù)據(jù)模型的人員參與選擇數(shù)據(jù)表和其他對(duì)象的范圍,需要根據(jù)應(yīng)用要求增加或修改表的關(guān)聯(lián)關(guān)系或字段的取值范圍等,保存在元數(shù)據(jù)中,供后面生成對(duì)象時(shí)使用該邏輯關(guān)聯(lián)。對(duì)專業(yè)數(shù)據(jù)庫(kù)的元數(shù)據(jù)描述包括:

(1)數(shù)據(jù)表信息:表名稱、字段組成、主鍵字段;

(2)字段信息:字段名稱、字段類型、字段長(zhǎng)度、是否非空;

(3)關(guān)聯(lián)關(guān)系:主子表的關(guān)聯(lián)信息。

2)生成簡(jiǎn)單業(yè)務(wù)對(duì)象

從元數(shù)據(jù)模型中讀取數(shù)據(jù)表信息及其關(guān)聯(lián)表信息,以人機(jī)交互方式供用戶選擇與具體業(yè)務(wù)操作相關(guān)的一組表及其關(guān)心字段;根據(jù)用戶選擇的表和字段信息,及其元數(shù)據(jù)描述,自動(dòng)生成對(duì)表間關(guān)聯(lián)關(guān)系、讀取順序的描述,以及默認(rèn)的級(jí)聯(lián)增刪改查操作的SQL語(yǔ)句。允許用戶以人機(jī)交互方式修改默認(rèn)生成的SQL語(yǔ)句,支持SQL的修改、增加、刪除,支持以參數(shù)形式定義SQL查詢條件,保存業(yè)務(wù)對(duì)象信息到XML中。具體操作流程如圖1所示。

3)生成復(fù)雜業(yè)務(wù)對(duì)象

根據(jù)分析的2.2.1節(jié)中用戶定義的一組簡(jiǎn)單業(yè)務(wù)對(duì)象的關(guān)聯(lián)關(guān)系,生成對(duì)象樹。可能存在多棵對(duì)象樹;根據(jù)對(duì)簡(jiǎn)單業(yè)務(wù)對(duì)象樹的深度和廣度兩種遍歷方式,生成供用戶參考的對(duì)象訪問(wèn)操作執(zhí)行順序鏈表。用戶通過(guò)人機(jī)交互方式確定業(yè)務(wù)工作流程中可能存在的一種或多種對(duì)象操作的訪問(wèn)操作執(zhí)行順序,還可以給出選擇某種執(zhí)行順序的條件或優(yōu)先級(jí);與某個(gè)工作流程相關(guān)的一組簡(jiǎn)單對(duì)象,構(gòu)成復(fù)雜業(yè)務(wù)對(duì)象,同樣以XML存儲(chǔ),XML中包含以下信息:

(1)包含的簡(jiǎn)單業(yè)務(wù)對(duì)象列表,引用位置。

(2)描述簡(jiǎn)單業(yè)務(wù)對(duì)象間的父子關(guān)系或兄弟關(guān)系,描述建立上述關(guān)系的表和字段。

(3)描述簡(jiǎn)單對(duì)象訪問(wèn)操作的執(zhí)行順序,及選擇某種執(zhí)行順序的條件或優(yōu)先級(jí)。

2.2.2 數(shù)據(jù)訪問(wèn)

圖1 生成簡(jiǎn)單業(yè)務(wù)對(duì)象的過(guò)程

數(shù)據(jù)訪問(wèn)主要提供數(shù)據(jù)庫(kù)中各類對(duì)象的數(shù)據(jù)訪問(wèn)操作、查詢優(yōu)化[9]以及連接池管理。數(shù)據(jù)訪問(wèn)操作包括查詢、增加、修改和刪除,接口類型為對(duì)象類型。查詢優(yōu)化主要包括查詢預(yù)取隊(duì)列和關(guān)鍵對(duì)象緩存:根據(jù)復(fù)雜業(yè)務(wù)對(duì)象描述中對(duì)象操作的執(zhí)行順序,抽取執(zhí)行操作序列中的查詢操作,形成查詢預(yù)取隊(duì)列;在50%以上的復(fù)雜業(yè)務(wù)對(duì)象中存在,且至少存在于兩個(gè)復(fù)雜業(yè)務(wù)對(duì)象中的簡(jiǎn)單對(duì)象稱作關(guān)鍵對(duì)象,將關(guān)鍵對(duì)象存儲(chǔ)在內(nèi)存中形成關(guān)鍵對(duì)象緩存鏈表。連接池管理主要管理數(shù)據(jù)庫(kù)的連接,保證數(shù)據(jù)庫(kù)資源的合理分配。

根據(jù)應(yīng)用的對(duì)象接口請(qǐng)求執(zhí)行對(duì)象的增刪改查操作,具體操作流程如圖2所示。

圖2 對(duì)象數(shù)據(jù)訪問(wèn)及優(yōu)化的流程

1)如果是查詢操作,步驟如下:

(1)如果查詢對(duì)象不在緩存中,則從數(shù)據(jù)庫(kù)獲取查詢結(jié)果,反射成對(duì)象集,如果該對(duì)象在關(guān)鍵對(duì)象緩存鏈表中,則將對(duì)象集數(shù)據(jù)駐留在緩存中;再根據(jù)查詢預(yù)取隊(duì)列,獲得下一個(gè)對(duì)象查詢操作,利用空閑時(shí)間提前執(zhí)行。

(2)如果查詢對(duì)象數(shù)據(jù)已經(jīng)在緩存中,則不訪問(wèn)數(shù)據(jù)庫(kù),直接從緩存中獲取對(duì)象。

(3)然后操作對(duì)象本身及其關(guān)聯(lián)的對(duì)象。

2)如果是對(duì)象的增刪改操作,則根據(jù)復(fù)雜對(duì)象文件的級(jí)聯(lián)配置執(zhí)行級(jí)聯(lián)操作,提交數(shù)據(jù)庫(kù)。如果未設(shè)置級(jí)聯(lián)關(guān)系,則執(zhí)行單表操作,提交數(shù)據(jù)庫(kù);如果執(zhí)行增刪改操作的對(duì)象是關(guān)鍵對(duì)象,則還需根據(jù)增刪改結(jié)果更新緩存中的對(duì)象數(shù)據(jù)。

3 關(guān)鍵技術(shù)

在對(duì)象關(guān)系映射系統(tǒng)中,對(duì)象預(yù)取與緩存技術(shù)可以提高用戶對(duì)持久化對(duì)象的訪問(wèn)效率。

3.1 查詢預(yù)取

通過(guò)某種策略預(yù)測(cè)將來(lái)可能會(huì)被訪問(wèn)到的對(duì)象,并預(yù)先將這些對(duì)象讀取到客戶端。如果預(yù)測(cè)對(duì)象在后面確實(shí)被訪問(wèn)到了,那么預(yù)取策略會(huì)有效的減少數(shù)據(jù)訪問(wèn)到數(shù)據(jù)庫(kù)查詢對(duì)象的操作,提高數(shù)據(jù)訪問(wèn)性能。相反,如果預(yù)取對(duì)象沒(méi)有被訪問(wèn)到,則會(huì)降低系統(tǒng)的性能,所以制定合理的預(yù)取策略是至關(guān)重要的。

本方案是通過(guò)抽取復(fù)雜對(duì)象操作序列中的查詢操作形成查詢預(yù)取隊(duì)列來(lái)構(gòu)建預(yù)取策略的。在生成復(fù)雜對(duì)象的過(guò)程中,用戶可以使用和修改定制默認(rèn)生成的簡(jiǎn)單對(duì)象間關(guān)聯(lián)關(guān)系,根據(jù)復(fù)雜對(duì)象中關(guān)聯(lián)關(guān)系的描述,可以構(gòu)建出多個(gè)查詢預(yù)取隊(duì)列。因?yàn)橛脩舾鶕?jù)實(shí)際數(shù)據(jù)需求參與關(guān)聯(lián)關(guān)系的確定,所以查詢預(yù)取隊(duì)列中的對(duì)象被訪問(wèn)的機(jī)率是很大的甚至是100%。當(dāng)用戶查詢某個(gè)對(duì)象A時(shí),后臺(tái)會(huì)繼續(xù)查詢隊(duì)列中的下一個(gè)對(duì)象B,當(dāng)操作到對(duì)象B的數(shù)據(jù)時(shí),后臺(tái)會(huì)繼續(xù)查詢B的下一個(gè)對(duì)象C的數(shù)據(jù),以提高查詢的速度。當(dāng)用戶獲取到一個(gè)對(duì)象查詢數(shù)據(jù)后,可以在內(nèi)存中獲取隊(duì)列中下一個(gè)對(duì)象的數(shù)據(jù),減少了再去查詢數(shù)據(jù)庫(kù)的時(shí)間。

3.2 關(guān)鍵對(duì)象緩存

在實(shí)際應(yīng)用中,頻繁地訪問(wèn)數(shù)據(jù)庫(kù),會(huì)對(duì)應(yīng)用的性能造成很大影響。為了降低訪問(wèn)數(shù)據(jù)庫(kù)的頻率,可以把需要經(jīng)常被訪問(wèn)的業(yè)務(wù)數(shù)據(jù)存放在緩存中,并且通過(guò)特定的機(jī)制來(lái)保證緩存中的數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)同步[10]。本方案的緩存思想是抽取所有對(duì)象中的關(guān)鍵對(duì)象形成緩存對(duì)象鏈表,對(duì)鏈表中的對(duì)象數(shù)據(jù)進(jìn)行本地緩存和實(shí)時(shí)更新。在用戶的第一次查詢中,如果發(fā)現(xiàn)查詢對(duì)象是鏈表中的關(guān)鍵對(duì)象,則將查詢結(jié)果對(duì)象駐留在內(nèi)存中,供其它應(yīng)用再次查詢時(shí)直接使用,減少訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)間。當(dāng)用戶通過(guò)關(guān)鍵對(duì)象的修改接口更新關(guān)鍵對(duì)象的數(shù)據(jù)到數(shù)據(jù)庫(kù)后,數(shù)據(jù)訪問(wèn)也同步更新緩存中的關(guān)鍵對(duì)象數(shù)據(jù),保證內(nèi)存塊中關(guān)鍵對(duì)象的數(shù)據(jù)最新。

4 應(yīng)用示例

復(fù)雜對(duì)象的數(shù)據(jù)訪問(wèn)在某項(xiàng)目中的使用示例步驟如下:

1)用戶抽取業(yè)務(wù)數(shù)據(jù)庫(kù)模型到元數(shù)據(jù)庫(kù)中,形成數(shù)據(jù)庫(kù)邏輯視圖。

2)基于元數(shù)據(jù)模型,生成交通設(shè)施對(duì)象,選擇關(guān)心的一張主表交通設(shè)施及其關(guān)聯(lián)表,選擇主表中所有字段和關(guān)聯(lián)表中名稱字段,自動(dòng)生成關(guān)聯(lián)的查詢SQL,主子表級(jí)聯(lián)操作的增刪改SQL。

生成橋梁對(duì)象,選擇表中的字段交通設(shè)施內(nèi)碼、橋長(zhǎng)、橋?qū)挕⑺睢w屬地區(qū)、可停靠船的最大噸位等,再在提示的關(guān)聯(lián)表中選擇交通設(shè)施表,選擇關(guān)聯(lián)屬性交通設(shè)施名稱,自動(dòng)生成關(guān)聯(lián)的查詢SQL,主子表級(jí)聯(lián)操作的增刪改SQL。類似地生成機(jī)場(chǎng)對(duì)象。

生成人防設(shè)施對(duì)象,用戶通過(guò)業(yè)務(wù)對(duì)象生成工具瀏覽專業(yè)庫(kù)中的數(shù)據(jù)表,選擇關(guān)心的一張主表人防設(shè)施表,選擇表中的字段人防設(shè)施內(nèi)碼、防護(hù)等級(jí)ID(關(guān)聯(lián)防護(hù)等級(jí)表)、建筑面積、管理單位、可儲(chǔ)藏人數(shù)、其它描述,質(zhì)量現(xiàn)狀I(lǐng)D(關(guān)聯(lián)質(zhì)量現(xiàn)狀表)等,再在提示的關(guān)聯(lián)表中選擇防護(hù)等級(jí)表、質(zhì)量現(xiàn)狀表,選擇關(guān)聯(lián)屬性防護(hù)等級(jí)名稱字段和質(zhì)量現(xiàn)狀描述字段,自動(dòng)生成關(guān)聯(lián)的查詢SQL,主子表級(jí)聯(lián)操作的增刪改SQL。

3)由2)生成的4個(gè)對(duì)象構(gòu)建的樹形成復(fù)雜對(duì)象公共設(shè)施,構(gòu)建兩個(gè)查詢預(yù)取隊(duì)列:查詢11、查詢12、查詢13和查詢21、查詢22,如圖3所示。針對(duì)制作好的一系列對(duì)象生成對(duì)象接口動(dòng)態(tài)庫(kù)文件,用戶調(diào)用對(duì)象的增刪改查接口用于數(shù)據(jù)訪問(wèn)。

圖3 對(duì)象間的關(guān)聯(lián)關(guān)系

4)數(shù)據(jù)訪問(wèn)根據(jù)復(fù)雜業(yè)務(wù)對(duì)象公共設(shè)施描述中對(duì)象操作的執(zhí)行順序,按照查詢11至查詢13或查詢21至查詢22的順序查詢和預(yù)取對(duì)象數(shù)據(jù),形成查詢預(yù)取隊(duì)列;設(shè)置交通設(shè)施對(duì)象為關(guān)鍵對(duì)象,常駐內(nèi)存中,以提高這個(gè)對(duì)象的數(shù)據(jù)訪問(wèn)速度。

5)按照?qǐng)D3所示的流程,按查詢11至查詢13的查詢操作序列查詢交通設(shè)施對(duì)象,查詢數(shù)據(jù)庫(kù)返回結(jié)果,反射成交通設(shè)施對(duì)象集,根據(jù)預(yù)取隊(duì)列的描述,利用空閑時(shí)間提前執(zhí)行下一個(gè)對(duì)象橋梁對(duì)象的查詢操作,然后用戶可以操作交通設(shè)施對(duì)象及其關(guān)聯(lián)子對(duì)象橋梁,當(dāng)操作橋梁數(shù)據(jù)時(shí),再提前執(zhí)行下一個(gè)對(duì)象機(jī)場(chǎng)對(duì)象的查詢。因?yàn)榻煌ㄔO(shè)施為關(guān)鍵對(duì)象,因此該對(duì)象數(shù)據(jù)駐留在內(nèi)存中。如果用戶更新了交通設(shè)施這個(gè)對(duì)象中的數(shù)據(jù),數(shù)據(jù)訪問(wèn)同時(shí)也要刷新駐留在內(nèi)存的交通設(shè)施對(duì)象數(shù)據(jù)。

5 結(jié)語(yǔ)

通過(guò)復(fù)雜對(duì)象化數(shù)據(jù)訪問(wèn),使專業(yè)人員將精力集中在業(yè)務(wù)邏輯處理上,不必關(guān)心數(shù)據(jù)庫(kù)底層操作的細(xì)節(jié)。由于數(shù)據(jù)訪問(wèn)中的對(duì)象尤其是帶有業(yè)務(wù)流程的復(fù)雜對(duì)象是綜合了軍事指揮控制領(lǐng)域應(yīng)用的數(shù)據(jù)訪問(wèn)需求提煉出來(lái)的,所以具有一定的通用性,該系統(tǒng)可以應(yīng)用到指控領(lǐng)域的各個(gè)項(xiàng)目中去,大大提高項(xiàng)目的開(kāi)發(fā)效率和可擴(kuò)展性。

[1]吳姍姍,彭向陽(yáng).基于XML的通用數(shù)據(jù)庫(kù)訪問(wèn)引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].指揮信息系統(tǒng)與技術(shù),2010(1):55-59.

[2]Christian Bauer,Gavin King.Hibernate in Action[M].USA:Manning Publication,2004:15-26.

[3]Pierre Henri Kuaté,Christian Bauer,Gavin King.NHibernate In Action[M].Manning Publications,2007:36-40.

[4]高昂,衛(wèi)文學(xué).基于Hibernate與Struts框架的數(shù)據(jù)持久化應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2005,25(12):2818-2819.

[5]李斌勇,李慶.基于NHibernate的ORM映射機(jī)制研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009(7):32-34.

[6]萬(wàn)長(zhǎng)鵬,唐慧佳.基于ASP.NET+Castle框架的旅游管理系統(tǒng)的設(shè)計(jì)[J].成都信息工程學(xué)院學(xué)報(bào),2007(4):458-461.

[7]周浩,張祖平.面向?qū)ο蟮某志没夹g(shù)的研究與實(shí)現(xiàn)[J].企業(yè)技術(shù)開(kāi)發(fā),2010(9):4-5.

[8]武亞青.數(shù)據(jù)共享環(huán)境研究[J].指揮信息系統(tǒng)與技術(shù),2011(2):35-40.

[9]Ben Wiedermann,William R C.Extracting queries by static analysis of t ransparent persiste nce[J].ACM SIGPLAN Notices,2007,42(1):199-210.

[10]孫衛(wèi)琴.精通Hibernate:java對(duì)象持久化技術(shù)詳解[M].北京:電子工業(yè)出版社,2005:173-176.

猜你喜歡
關(guān)聯(lián)數(shù)據(jù)庫(kù)用戶
“苦”的關(guān)聯(lián)
奇趣搭配
數(shù)據(jù)庫(kù)
智趣
讀者(2017年5期)2017-02-15 18:04:18
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫(kù)
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 国产福利观看| 国产成人精品一区二区不卡| 欧美亚洲一区二区三区在线| 激情六月丁香婷婷| 亚洲欧洲免费视频| 亚欧乱色视频网站大全| 欧美中文字幕在线二区| 色悠久久综合| 久草网视频在线| 欧美日韩国产精品va| 欧美日韩激情在线| 成人在线天堂| 毛片在线看网站| 久久久久青草线综合超碰| 国产欧美精品专区一区二区| 亚洲 成人国产| 一级香蕉视频在线观看| 激情综合婷婷丁香五月尤物| 国产精品天干天干在线观看| 国语少妇高潮| 精品国产自| 日韩精品成人网页视频在线| 成人福利在线免费观看| 国产青榴视频在线观看网站| 国产免费羞羞视频| 91av国产在线| 日韩精品一区二区三区免费| 好吊日免费视频| 国产在线自揄拍揄视频网站| 久久精品波多野结衣| 97色伦色在线综合视频| 狂欢视频在线观看不卡| 麻豆精品在线视频| 波多野结衣在线se| 无码国产伊人| 国产区免费精品视频| 波多野一区| 欧美成人国产| 免费一级毛片不卡在线播放| 免费无码AV片在线观看中文| 亚洲一区无码在线| 久久综合成人| 大陆国产精品视频| 五月婷婷综合色| 日韩精品一区二区三区中文无码 | 亚洲欧美一级一级a| 国产精品hd在线播放| 22sihu国产精品视频影视资讯| 99久久精品免费看国产电影| 国产精品手机在线播放| 亚洲IV视频免费在线光看| 国产午夜在线观看视频| 91精品视频播放| 久久久久国产精品免费免费不卡| 亚洲香蕉伊综合在人在线| 9啪在线视频| 国产成人做受免费视频| 尤物国产在线| 亚洲综合一区国产精品| 国产男人天堂| 亚洲中文久久精品无玛| 不卡无码h在线观看| 国产精品一区二区不卡的视频| 国产高清在线观看91精品| 久久a毛片| 国产精品私拍在线爆乳| 九色国产在线| 国产女人水多毛片18| 色播五月婷婷| 在线精品亚洲一区二区古装| 欧美亚洲综合免费精品高清在线观看| 久久毛片基地| 99视频在线观看免费| 啪啪啪亚洲无码| 91伊人国产| 亚洲天堂久久新| 亚洲欧州色色免费AV| 国产成人福利在线视老湿机| 91精品国产一区| 91免费观看视频| 青青久久91| 国产成人综合久久精品尤物|