張海濤
(金陵科技學(xué)院軟件工程學(xué)院 南京 211169)
?
一種通用數(shù)據(jù)訪問服務(wù)的構(gòu)造和設(shè)計(jì)*
張海濤
(金陵科技學(xué)院軟件工程學(xué)院 南京 211169)
為了解決當(dāng)前各類業(yè)務(wù)應(yīng)用系統(tǒng)(軟件)中數(shù)據(jù)庫連接訪問中存在的問題,結(jié)合當(dāng)前軟件服務(wù)化的概念,提出一種通用數(shù)據(jù)訪問服務(wù)的架構(gòu)和設(shè)計(jì)方案。通用數(shù)據(jù)訪問服務(wù)能有效地實(shí)現(xiàn)數(shù)據(jù)持久化,提供以面向?qū)ο蟮姆绞絹碓L問關(guān)系型數(shù)據(jù)庫,實(shí)現(xiàn)多數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫的統(tǒng)一注冊(cè)和管理,以及多數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫的統(tǒng)一事務(wù)管理,有效提高業(yè)務(wù)系統(tǒng)性能。
數(shù)據(jù)訪問; 服務(wù)化; 持久化; JTA; 對(duì)象關(guān)系映射
Class Number TP311.5
隨著信息化建設(shè)的不斷深入,各類企業(yè)與組織大多建立了適合自身的各種業(yè)務(wù)管理系統(tǒng)。由于這些系統(tǒng)是在不同階段開發(fā)的,采用的技術(shù)手段不同,每個(gè)系統(tǒng)都有自己的運(yùn)行環(huán)境和數(shù)據(jù)存儲(chǔ)方式,這些數(shù)據(jù)的格式不統(tǒng)一,各個(gè)應(yīng)用系統(tǒng)彼此封閉,數(shù)據(jù)難以交換和共享;同時(shí),在使用時(shí)間較久的業(yè)務(wù)系統(tǒng)軟件中,往往每一業(yè)務(wù)系統(tǒng)有很多構(gòu)件組成,這些構(gòu)件之間大多單獨(dú)采用數(shù)據(jù)庫連接手段,導(dǎo)致數(shù)據(jù)訪問效率低下,對(duì)系統(tǒng)性能影響很大,又難以改進(jìn)[1]。隨著技術(shù)的發(fā)展,軟件逐漸從構(gòu)件化向服務(wù)化發(fā)展,對(duì)數(shù)據(jù)訪問進(jìn)行服務(wù)化封裝技術(shù)逐漸成熟,采用同一技術(shù)手段對(duì)數(shù)據(jù)訪問功能實(shí)現(xiàn)并封裝,提供統(tǒng)一的表達(dá)方式和統(tǒng)一的數(shù)據(jù)訪問,能有效地解決存在的問題。利用數(shù)據(jù)訪問服務(wù)技術(shù)集成各種異構(gòu)數(shù)據(jù)時(shí),不用改變?cè)紨?shù)據(jù)的存儲(chǔ)和管理方式,可集中為異構(gòu)數(shù)據(jù)源提供一個(gè)統(tǒng)一的高層檢索服務(wù),是實(shí)現(xiàn)異構(gòu)數(shù)據(jù)集成的理想解決方案。
在信息管理系統(tǒng)領(lǐng)域,最初采用C/S架構(gòu)模式,在Windows開發(fā)環(huán)境下,多采用ODBC,ADO,OLE DB,OCI等數(shù)據(jù)庫連接技術(shù),此種技術(shù)連接采用永久性連接,每一個(gè)應(yīng)用通過一個(gè)連接,連接到數(shù)據(jù)庫服務(wù)器上。開放數(shù)據(jù)庫互聯(lián)(ODBC)是微軟公司開放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API,通過允許開發(fā)者制作一個(gè)在大多數(shù)關(guān)系數(shù)據(jù)庫中可運(yùn)行的簡單的API調(diào)用,簡化了從Windows(以及其他一些操作系統(tǒng))到數(shù)據(jù)庫的訪問[2]。使用ODBC等數(shù)據(jù)訪問的程序在大量應(yīng)用構(gòu)件同時(shí)啟動(dòng)的情況下,數(shù)據(jù)庫連接數(shù)過多,一些應(yīng)用往往未執(zhí)行數(shù)據(jù)訪問操作,卻一直占用數(shù)據(jù)庫的連接,長期占有又不釋放,造成數(shù)據(jù)訪問效率低下,降低了系統(tǒng)的使用性能。其數(shù)據(jù)訪問方式如圖1所示。
圖1 C/S模式數(shù)據(jù)訪問示意圖
隨著B/S架構(gòu)的發(fā)展,JAVA技術(shù)得到大量應(yīng)用,使得應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器得到分離,機(jī)器性能跟隨硬件發(fā)展有了較大提升。但開發(fā)者大多仍只采用JDBC等簡單的數(shù)據(jù)庫連接方式,隨著大量B/S系統(tǒng)的上線運(yùn)行,管理人員需要維護(hù)各類業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫,對(duì)開發(fā)人員,需要了解數(shù)據(jù)庫的位置,連接方式等內(nèi)容才能正確訪問數(shù)據(jù)庫,否則軟件難以正常運(yùn)行;對(duì)管理者來說,軟件數(shù)據(jù)庫各不相同,有些甚至不能部署在同一臺(tái)機(jī)器上,管理維護(hù)備份十分困難;對(duì)實(shí)際用戶來說,各類數(shù)據(jù)庫的機(jī)器繁多,投入代價(jià)大,性能低下。技術(shù)人員一直考慮如何解決這個(gè)問題,隨著分布式計(jì)算技術(shù)(如CORBA、XML等)的迅猛發(fā)展,使得原來的系統(tǒng)可以通過它們進(jìn)行封裝,隱藏?cái)?shù)據(jù)的內(nèi)部結(jié)構(gòu),采用公共數(shù)據(jù)模型將局部共享數(shù)據(jù)進(jìn)行封裝,對(duì)外提供公共訪問接口[3~6]。但這些封裝后的公共訪問接口都不是通用和完備的,在某些業(yè)務(wù)系統(tǒng)和軟件中無法直接使用.但在SOA軟件服務(wù)化概念和架構(gòu)提出之后,對(duì)于數(shù)據(jù)訪問服務(wù)和軟件設(shè)計(jì)理念上,就產(chǎn)生了很多新的思路和途徑。
面向服務(wù)構(gòu)架(Service-Oriented Architecture,SOA)是GartnerGroup于1996年最早提出,它是一種進(jìn)行系統(tǒng)開發(fā)的體系架構(gòu),在對(duì)象構(gòu)件計(jì)算模型的基礎(chǔ)上,將不同的功能單元通過預(yù)先定義好的接口和契約聯(lián)系起來,實(shí)現(xiàn)程序和服務(wù)的重復(fù)利用。其最初應(yīng)用并不是為了業(yè)務(wù)軟件系統(tǒng),但是由于Web Service的廣泛應(yīng)用,SOA企業(yè)化應(yīng)用的趨勢(shì)明顯加強(qiáng),盡管Web Service并不一定需要SOA,SOA也并不都以Web Service為基礎(chǔ),但是這兩種技術(shù)所代表的方向與趨勢(shì)是一致的。Web Service將SOA帶向主流用戶,同時(shí)SOA的最佳實(shí)踐也將使Web Service獲得最初的成功[7]。本質(zhì)上說,SOA是一種面向接口的軟件構(gòu)架,以接口定義為基礎(chǔ),開始構(gòu)建整個(gè)應(yīng)用拓?fù)?將其實(shí)施為一個(gè)接口拓?fù)洹⒔涌趯?shí)現(xiàn)和接口請(qǐng)求[8]。SOA是服務(wù)和服務(wù)用戶之間的一種聯(lián)系,通過一個(gè)充分的軟件模型來代替和實(shí)現(xiàn)一個(gè)商務(wù)功能,通過一個(gè)接口來實(shí)現(xiàn)軟件模型就是服務(wù)。
通用的數(shù)據(jù)訪問服務(wù)軟件的主要能力是:針對(duì)各種類型的數(shù)據(jù)訪問,這些數(shù)據(jù)可能來自于多個(gè)數(shù)據(jù)源,也可能來自于不同類型的數(shù)據(jù)庫,通用數(shù)據(jù)訪問軟件設(shè)計(jì)實(shí)現(xiàn)一種架構(gòu),對(duì)各類數(shù)據(jù)訪問接口進(jìn)行統(tǒng)一封裝,對(duì)外提供了一種統(tǒng)一、高效、安全的數(shù)據(jù)訪問方式,支持開發(fā)者以面向?qū)ο缶幊痰姆绞綄?shí)現(xiàn)數(shù)據(jù)庫的訪問,支持對(duì)多數(shù)據(jù)庫或者異構(gòu)數(shù)據(jù)庫的連接和連接的管理,支持聲明式的事務(wù)控制。解決了傳統(tǒng)的數(shù)據(jù)訪問存在的問題,比如其編程方式是基于標(biāo)準(zhǔn)SQL進(jìn)行的,數(shù)據(jù)訪問時(shí)的事務(wù)控制也非常困難,對(duì)開發(fā)者的技術(shù)水平提出了比較高的要求,而且代碼的質(zhì)量依賴于開發(fā)者個(gè)人的經(jīng)驗(yàn)、能力、狀態(tài)等因素等問題。
通用數(shù)據(jù)訪問服務(wù)軟件在數(shù)據(jù)庫和業(yè)務(wù)(系統(tǒng))軟件之間,提供一種統(tǒng)一、高效、安全的數(shù)據(jù)庫訪問連接方式。如圖2所示。
圖2 通用數(shù)據(jù)訪問體系結(jié)構(gòu)圖
持久化對(duì)象[9]是通用數(shù)據(jù)訪問軟件體系結(jié)構(gòu)中的關(guān)鍵節(jié)點(diǎn),它描述的是業(yè)務(wù)系統(tǒng)(軟件)中的實(shí)體對(duì)象,持久化對(duì)象可以被業(yè)務(wù)系統(tǒng)(軟件)訪問,同時(shí)也可以被數(shù)據(jù)訪問服務(wù)使用,完成和數(shù)據(jù)庫、業(yè)務(wù)軟件或者其他非結(jié)構(gòu)化數(shù)據(jù)庫之間的映射關(guān)系。所謂數(shù)據(jù)持久化就是讓對(duì)象投影到關(guān)系數(shù)據(jù)庫中,然后實(shí)施持久化。
具體實(shí)現(xiàn)方式:建立對(duì)象到關(guān)系數(shù)據(jù)庫的映射。
例如:建立UserInfo類到數(shù)據(jù)庫的映射。
一個(gè)簡單的類UserInfo:
public class UserInfo{
private string id;
private String name;
}
UserInfo類對(duì)應(yīng)的數(shù)據(jù)庫表USERINFOR:
表1 數(shù)據(jù)庫表USERINFOR
當(dāng)進(jìn)行持久化時(shí),需要把對(duì)象的兩個(gè)屬性的值保存到數(shù)據(jù)庫存的USERINFOR中,如果使用JDBC的話,需要自己寫SQL,并獲取對(duì)象兩個(gè)屬性的值作為參數(shù)來進(jìn)行持久化。業(yè)務(wù)系統(tǒng)(軟件)直接操作持久化對(duì)象就可以完成對(duì)數(shù)據(jù)的訪問,不需要考慮數(shù)據(jù)是否來自于多個(gè)數(shù)據(jù)源或者是異構(gòu)數(shù)據(jù)庫;業(yè)務(wù)系統(tǒng)(軟件)使用數(shù)據(jù)訪問服務(wù)中的分布式事務(wù)管理,可以實(shí)現(xiàn)針對(duì)多個(gè)數(shù)據(jù)源進(jìn)行數(shù)據(jù)訪問的事務(wù)處理。
4.1 數(shù)據(jù)訪問服務(wù)結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)訪問服務(wù)實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫、非結(jié)構(gòu)數(shù)據(jù)和持久化數(shù)據(jù)對(duì)象之間的映射關(guān)系,并且提供的統(tǒng)一連接、聲明式事務(wù)能力,如圖3所示。
圖3 數(shù)據(jù)訪問服務(wù)組成圖
數(shù)據(jù)訪問服務(wù)由對(duì)象關(guān)系映射、統(tǒng)一數(shù)據(jù)連接、聲明式事務(wù)三部分組成。對(duì)象關(guān)系映射實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫、非結(jié)構(gòu)數(shù)據(jù)和持久化數(shù)據(jù)對(duì)象之間的映射關(guān)系,對(duì)象關(guān)系映射使用統(tǒng)一數(shù)據(jù)連接中提供的連接和數(shù)據(jù)庫進(jìn)行交互,使用聲明式事務(wù)實(shí)現(xiàn)多數(shù)據(jù)庫訪問時(shí)的事務(wù)管理;統(tǒng)一數(shù)據(jù)連接實(shí)現(xiàn)了和多數(shù)據(jù)庫、異構(gòu)數(shù)據(jù)庫之間的統(tǒng)一連接方式,并且對(duì)數(shù)據(jù)連接進(jìn)行統(tǒng)一的管理,幫助開發(fā)者統(tǒng)一的管理數(shù)據(jù)庫的連接;聲明式事務(wù)提供分布式事務(wù)處理的能力,而且支持聲明式的事務(wù)開發(fā)模式,不需要開發(fā)者編寫任何事務(wù)處理的代碼。
4.1.1 對(duì)象關(guān)系映射
對(duì)象關(guān)系映射實(shí)現(xiàn)對(duì)象和關(guān)系型數(shù)據(jù)庫之間的映射關(guān)系,主要包括兩方面的內(nèi)容:對(duì)象關(guān)系映射、對(duì)象查詢語言。
· 對(duì)象關(guān)系映射(ORM)[10]:用于描述對(duì)象和關(guān)系型數(shù)據(jù)庫之間的映射關(guān)系,包括描述對(duì)象屬性和數(shù)據(jù)庫表字段之間的映射關(guān)系,將對(duì)象和對(duì)象之間的繼承、聚合等關(guān)系描述成數(shù)據(jù)庫表之間的一對(duì)一、一對(duì)多等關(guān)系。對(duì)象關(guān)系映射實(shí)現(xiàn)了對(duì)象和關(guān)系型數(shù)據(jù)庫之間的映射,因此開發(fā)者只需要操作對(duì)象即可實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫的操作,降低了對(duì)開發(fā)者的技術(shù)要求。
· 對(duì)象訪問語言(OSQL):對(duì)象訪問語言是一種面向?qū)ο蟮念怱QL語言,支持針對(duì)對(duì)象的各種操作,包括對(duì)象的查詢、增加、修改、刪除。對(duì)象訪問語言幫助開發(fā)者能夠基于對(duì)象訪問語言直接對(duì)持久化數(shù)據(jù)對(duì)象進(jìn)行操作,因此無需了解任何特定數(shù)據(jù)庫提供的SQL語言,開發(fā)出來的業(yè)務(wù)軟件也可以在異構(gòu)數(shù)據(jù)庫之間實(shí)現(xiàn)無縫的移植。
4.1.2 統(tǒng)一數(shù)據(jù)連接
統(tǒng)一數(shù)據(jù)連接實(shí)現(xiàn)了和多數(shù)據(jù)源、異構(gòu)數(shù)據(jù)庫之間的統(tǒng)一連接和管理,幫助開發(fā)者采用一種統(tǒng)一、簡單的方式實(shí)現(xiàn)和數(shù)據(jù)庫的連接,并且能夠更好地管理數(shù)據(jù)庫連接,提升數(shù)據(jù)訪問的效率。統(tǒng)一數(shù)據(jù)連接由統(tǒng)一命名服務(wù)、數(shù)據(jù)庫連接池、數(shù)據(jù)庫連接和數(shù)據(jù)連接適配器四部分組成。
· 統(tǒng)一命名服務(wù)(Java Naming and Directory Interface,Java命名和目錄接口):統(tǒng)一命名服務(wù)提供統(tǒng)一的、基于命名方式訪問資源的服務(wù)能力,可以將數(shù)據(jù)庫連接池注冊(cè)到統(tǒng)一命名服務(wù)器上,開發(fā)者可以基于標(biāo)準(zhǔn)的訪問接口訪問數(shù)據(jù)庫連接池。統(tǒng)一命名服務(wù)能夠幫助我們?yōu)殚_發(fā)者提供統(tǒng)一的、標(biāo)準(zhǔn)的數(shù)據(jù)庫連接獲取接口,通過這套接口獲取對(duì)多數(shù)據(jù)源或者異種數(shù)據(jù)庫的連接。
· 數(shù)據(jù)庫連接池(DataSource):采用J2EE中提供的標(biāo)準(zhǔn)數(shù)據(jù)庫連接池技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫連接的注冊(cè)、分配、管理和釋放,數(shù)據(jù)庫連接池允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是每次訪問數(shù)據(jù)庫的時(shí)候都重新建立一個(gè)數(shù)據(jù)庫連接。數(shù)據(jù)庫連接池能夠幫助開發(fā)者統(tǒng)一地注冊(cè)多數(shù)據(jù)源,并且能夠設(shè)置各種策略去分配、管理和釋放這些數(shù)據(jù)庫連接,而且由于數(shù)據(jù)庫連接池采用了緩存策略,因此數(shù)據(jù)庫連接的獲取時(shí)間比單獨(dú)連接數(shù)據(jù)庫要快很多,能明顯提高數(shù)據(jù)庫訪問的性能。
數(shù)據(jù)庫連接池的主要操作過程:
1) 創(chuàng)建數(shù)據(jù)庫連接池對(duì)象;
2) 按照配置好的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫連接(即:空閑連接數(shù));
3) 對(duì)于任一數(shù)據(jù)庫訪問請(qǐng)求,直接從連接池中得到一個(gè)連接。如果數(shù)據(jù)庫連接池對(duì)象中無空閑連接,且連接數(shù)沒有達(dá)到最大活躍連接數(shù),則創(chuàng)建一個(gè)新的數(shù)據(jù)庫連接;
4) 根據(jù)業(yè)務(wù)需要進(jìn)行存取數(shù)據(jù)庫操作;
5) 關(guān)閉數(shù)據(jù)庫,釋放所有數(shù)據(jù)庫連接(此時(shí)的關(guān)閉數(shù)據(jù)庫連接,并非真正關(guān)閉,而是將其放入空閑隊(duì)列中。如實(shí)際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接);
6) 釋放數(shù)據(jù)庫連接池對(duì)象(釋放數(shù)據(jù)庫連接池對(duì)象,并釋放所有連接)。
數(shù)據(jù)庫連接(JDBC):數(shù)據(jù)庫連接是直接和數(shù)據(jù)庫交互的部分,采用J2EE中標(biāo)準(zhǔn)的JDBC來實(shí)現(xiàn)數(shù)據(jù)庫連接和訪問,JDBC提供了一套統(tǒng)一、標(biāo)準(zhǔn)的接口,這套接口可以適用于連接各種不同類型的數(shù)據(jù)庫。JDBC能夠幫助開發(fā)者屏蔽多個(gè)數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫帶來的差異性,是統(tǒng)一數(shù)據(jù)連接的重要組成部分。
數(shù)據(jù)庫連接適配器(Adapter):適配器技術(shù)是J2EE架構(gòu)中提供的一種標(biāo)準(zhǔn)的擴(kuò)展技術(shù),用于擴(kuò)展那些J2EE架構(gòu)中還沒有實(shí)現(xiàn)的業(yè)務(wù)功能。對(duì)于那些無法采用JDBC訪問的數(shù)據(jù)庫或者非結(jié)構(gòu)化數(shù)據(jù),我們需要采用自定義適配器的方式實(shí)現(xiàn)數(shù)據(jù)庫的連接,這些適配器應(yīng)該實(shí)現(xiàn)標(biāo)準(zhǔn)數(shù)據(jù)庫連接的相關(guān)標(biāo)準(zhǔn)、規(guī)范和接口。
4.1.3 聲明式事務(wù)
聲明式事務(wù)能夠幫助開發(fā)者采用聲明而不是編碼的方式實(shí)現(xiàn)數(shù)據(jù)庫訪問的事務(wù)管理,不需要開發(fā)者考慮訪問的是什么數(shù)據(jù)庫、數(shù)據(jù)庫部署在什么位置等。事務(wù)是訪問多數(shù)據(jù)源時(shí)需要重要考慮的內(nèi)容,也是比較難于實(shí)現(xiàn)的功能,在通用數(shù)據(jù)訪問服務(wù)軟件中,設(shè)計(jì)一種聲明式事務(wù)處理方式,開發(fā)人員只需要在使用事務(wù)的代碼前后采用某種聲明,后臺(tái)語句通過相應(yīng)的XML配置信息,可以實(shí)現(xiàn)事務(wù)管理的能力。
聲明式事務(wù)中使用JTA(Java Transaction API)[11]作為分布式事務(wù)的底層實(shí)現(xiàn)機(jī)制,JTA是標(biāo)準(zhǔn)的分布式事務(wù)管理機(jī)制,是一種高層的、與實(shí)現(xiàn)和協(xié)議無關(guān)的分布式事務(wù)服務(wù),用于實(shí)現(xiàn)多數(shù)據(jù)源的分布式事務(wù)處理。
數(shù)據(jù)訪問服務(wù)提供的基本能力:
1) 使用通用數(shù)據(jù)訪問服務(wù)軟件的接口,實(shí)現(xiàn)ORM(對(duì)象關(guān)系映射),即關(guān)系型數(shù)據(jù)庫表向?qū)ο笮娃D(zhuǎn)換,方便開發(fā)人員以面向?qū)ο蠓绞皆L問數(shù)據(jù)庫。
2) 標(biāo)準(zhǔn)SQL模式:對(duì)于特定開發(fā)人員來說,有些數(shù)據(jù)結(jié)構(gòu)是動(dòng)態(tài)的,用對(duì)象關(guān)系映射方式訪問數(shù)據(jù)庫表往往不夠靈活,因此,提供以標(biāo)準(zhǔn)SQL來訪問關(guān)系型數(shù)據(jù)庫表的能力。
數(shù)據(jù)訪問服務(wù)在SOA系統(tǒng)中有較多應(yīng)用。例如在設(shè)計(jì)一個(gè)人力資源管理SOA系統(tǒng)中,通過服務(wù)化設(shè)計(jì)理念,可以使用通用數(shù)據(jù)訪問服務(wù)軟件。其架構(gòu)如圖4所示。
圖4 常規(guī)SOA系統(tǒng)中數(shù)據(jù)訪問服務(wù)的使用
通用數(shù)據(jù)訪問服務(wù)遵循SOA系統(tǒng)中的SDO[12]標(biāo)準(zhǔn),能與ESB(企業(yè)服務(wù)總線)、服務(wù)平臺(tái)、流程引擎等相互協(xié)作使用,能有效提高系統(tǒng)整體的數(shù)據(jù)訪問性能。
為了解決各類業(yè)務(wù)應(yīng)用系統(tǒng)(軟件)中數(shù)據(jù)庫連接訪問中存在的問題,結(jié)合當(dāng)前軟件服務(wù)化的概念,提出一種通用數(shù)據(jù)訪問服務(wù)的架構(gòu)和設(shè)計(jì)方案。該方案支持開發(fā)者以一種統(tǒng)一的、標(biāo)準(zhǔn)的數(shù)據(jù)訪問方式,實(shí)現(xiàn)以面向?qū)ο蟮姆绞絹碓L問關(guān)系型數(shù)據(jù)庫,同時(shí)還實(shí)現(xiàn)多數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫的統(tǒng)一注冊(cè)和管理,以及多數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫的統(tǒng)一事務(wù)管理,簡化了對(duì)多數(shù)據(jù)源和異構(gòu)數(shù)據(jù)庫訪問時(shí)的開發(fā)工作。其采用了大量標(biāo)準(zhǔn)的技術(shù)實(shí)現(xiàn),屏蔽了數(shù)據(jù)庫連接、SQL語言和事務(wù)管理方面的工作;數(shù)據(jù)庫連接池技術(shù)的運(yùn)用能夠更加有效地管理數(shù)據(jù)庫連接,在對(duì)象關(guān)系映射部分也采用了優(yōu)化的策略,相對(duì)于傳統(tǒng)數(shù)據(jù)應(yīng)用開發(fā)環(huán)境下由開發(fā)者來編寫數(shù)據(jù)訪問代碼而言,能夠有效地提升業(yè)務(wù)軟件的性能,使用數(shù)據(jù)訪問服務(wù)軟件的調(diào)用接口能使業(yè)務(wù)軟件在數(shù)據(jù)訪問技術(shù)上的質(zhì)量上不再受到開發(fā)者的技術(shù)、經(jīng)驗(yàn)和狀態(tài)的影響,能夠有效地保障系統(tǒng)(軟件)的質(zhì)量。
[1] 廖湘琳,張宏軍,趙振南,等.數(shù)據(jù)訪問中間件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(7):86-88.
[2] 張子石,金義富.一種數(shù)據(jù)庫訪問中間件模型的構(gòu)造方法[J].測控技術(shù),2010,29(8):87-90.
[3] 伍科松,劉連忠.Web信息系統(tǒng)數(shù)據(jù)訪問層的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(23):4399-4401.
[4] 徐青翠,李雯.基于J2EE和XML的SOA服務(wù)層數(shù)據(jù)模型研究及實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),1014-1016.
[5] 劉波,郭少輝,陳暉,等.數(shù)據(jù)統(tǒng)一訪問中訪問控制機(jī)制的研究[J].軍事通信技術(shù),2013,34(3):40-47.
[6] 熊建,周春妮.一種數(shù)據(jù)訪問中間件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].成都電子機(jī)械高等??茖W(xué)校學(xué)報(bào),2008(3):29-32.
[7] Yefim V.Natis.Service-oriented architecture scenario[EBPOL].Gartner Group,2003-08-12.
[8] [美]Thomas Erl.SOA概念、技術(shù)與設(shè)計(jì)[M].王滿紅,陳榮華,譯.北京:機(jī)械工業(yè)出版社,2006,10.
[9] 苗曉輝.基于J2EE的數(shù)據(jù)持久化的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,33(5):272-274.
[10] 吳衛(wèi)平,王麗芳,蔣澤軍.基于ORM的數(shù)據(jù)持久層框架研究[J].微電子學(xué)與計(jì)算機(jī),2008(7):188-193.
[11] 李汝光,徐駿.基于JTA的跨數(shù)據(jù)庫分布式事務(wù)的實(shí)現(xiàn)[J].常州工學(xué)院學(xué)報(bào),2012,25(4):33-36.
[12] 謝虹,張冉,徐忠富.SDO實(shí)現(xiàn)技術(shù)研究[J].軟件,2012,33(6):48-53.
Construction and Design of Universal Data Access Service Software
ZHANG Haitao
(School of Software Engineering,Jinling Institute of Technology,Nanjing 211169)
In order to solve the current all kinds of business application system(software) access problems in database connection,based on the concept of the software as a service,the architecture and design of a kind of universal data access service is proposed.Universal data access service can effectively realize the persistent data,provides the object-oriented way to access relational database,and unifies registration and management of multi source and heterogeneous database,as well as the unified management of multiple data sources and heterogeneous database,effectively improve the service performance of the system.
data access,service,persistence,java transaction API,ORM
2014年8月11日,
2014年9月29日
張海濤,男,高級(jí)工程師,碩士,研究方向:指揮信息系統(tǒng)、管理信息系統(tǒng)、數(shù)據(jù)分析研究等。
TP311.5
10.3969/j.issn1672-9730.2015.02.031