專利名稱:一種基于j2ee的數(shù)據(jù)持久化方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在J2EE平臺(tái)下異構(gòu)數(shù)據(jù)庫環(huán)境中通用的數(shù)據(jù)持久化方法及系 統(tǒng),目標(biāo)是提高小型信息系統(tǒng)持久層的開發(fā)效率、降低在異構(gòu)數(shù)據(jù)庫之間的遷移成本。
背景技術(shù):
作為信息持久化的主要手段,數(shù)據(jù)庫已經(jīng)成為絕大多數(shù)信息系統(tǒng)中不可或缺的一 部分。為了滿足各種各樣的數(shù)據(jù)庫應(yīng)用需求,大量的異構(gòu)數(shù)據(jù)庫應(yīng)運(yùn)而生。目前在信息系 統(tǒng)中使用較為廣泛的異構(gòu)數(shù)據(jù)庫有 關(guān)系型數(shù)據(jù)庫建立在關(guān)系數(shù)據(jù)模型上,將數(shù)據(jù)分解成為二維數(shù)據(jù)表進(jìn)行存儲(chǔ)。 關(guān)系數(shù)據(jù)庫具有數(shù)據(jù)結(jié)構(gòu)化強(qiáng)、數(shù)據(jù)獨(dú)立性大、數(shù)據(jù)冗余較多等特點(diǎn),其對(duì)于數(shù)據(jù)讀、寫的 表現(xiàn)比較均衡。 對(duì)象數(shù)據(jù)庫將面向?qū)ο蟮姆椒ê蛿?shù)據(jù)庫技術(shù)結(jié)合起來,使數(shù)據(jù)庫的分析、設(shè)計(jì) 最大程度地與人們對(duì)客觀世界的認(rèn)識(shí)相一致,其讀寫的表現(xiàn)比較均衡,但整體性能要比關(guān) 系數(shù)據(jù)庫稍遜一籌。
XML數(shù)據(jù)庫建立在XML格式文檔的基礎(chǔ)上,能夠?qū)Π虢Y(jié)構(gòu)化和具有一定層次結(jié) 構(gòu)的數(shù)據(jù)進(jìn)行有效的存取管理,特別適用于管理和查詢網(wǎng)絡(luò)數(shù)據(jù),其讀寫的表現(xiàn)比較均衡, 整體性能要比對(duì)象數(shù)據(jù)庫更差,但是由于XML格式信息更適于在網(wǎng)絡(luò)中傳輸并且其數(shù)據(jù)結(jié) 構(gòu)便于人類理解,XML數(shù)據(jù)庫仍然在數(shù)據(jù)庫的使用中占有一席之地。 目錄數(shù)據(jù)庫一種基于目錄服務(wù)的數(shù)據(jù)庫,對(duì)于讀取操作做了特別的優(yōu)化,因而 更適用于讀數(shù)據(jù)比寫數(shù)據(jù)次數(shù)大的多的信息系統(tǒng)。此外,隨著Internet的廣泛普及,Web信息系統(tǒng)的數(shù)量突飛猛增。Web服務(wù)器作為 連接客戶端和數(shù)據(jù)庫服務(wù)器的一個(gè)中間層,既要對(duì)用戶的訪問請求進(jìn)行分析和處理,又要 和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。為了實(shí)現(xiàn)Web服務(wù)器的模塊化和層次化,系統(tǒng)設(shè)計(jì)開發(fā)時(shí)都會(huì)把 Web服務(wù)器劃分為負(fù)責(zé)分析和處理用戶訪問請求的業(yè)務(wù)邏輯層以及負(fù)責(zé)與數(shù)據(jù)庫服務(wù)器進(jìn) 行交互的數(shù)據(jù)持久層。于是,如何使信息系統(tǒng)的數(shù)據(jù)持久層方便、快捷、高效的與各種異構(gòu) 數(shù)據(jù)庫之間進(jìn)行交互成為了 一個(gè)重要的研究課題。為了方便用戶在J2EE平臺(tái)上實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問,J2EE推出了一系列訪問數(shù) 據(jù)庫的標(biāo)準(zhǔn)接口,如 Java Database Connectivity (Oracle Corporation. JDBC[EB/0L]. http://java. sun. com/products/jdbc/overview. html)、Java Naming and Directory Interface(OracleCorporation. JNDI[EB/0L]. http://java. sun. com/products/jndi/ overview, html)等。使用這些接口有很多的好處首先,利用標(biāo)準(zhǔn)接口開發(fā)的信息系統(tǒng)不 但可以跨平臺(tái)運(yùn)行,更可以在同構(gòu)數(shù)據(jù)庫之間不受數(shù)據(jù)庫供應(yīng)商的限制;其次,標(biāo)準(zhǔn)接口通 常都使用該種數(shù)據(jù)庫的主流語言,并保留了其查詢語言的全部能力,允許用戶調(diào)用存儲(chǔ)過 程、執(zhí)行特殊自定義查詢甚至使用與數(shù)據(jù)庫相關(guān)的特性操作;最后,直接使用標(biāo)準(zhǔn)接口會(huì)獲 得很好的操作性能。然而直接使用標(biāo)準(zhǔn)接口也會(huì)有很多不便一、開發(fā)人員必須確保數(shù)據(jù)庫 資源得到了妥善的處理。其中最顯著的問題是能否有效的管理數(shù)據(jù)庫連接。在打開并使用完數(shù)據(jù)庫連接之后(或者遇到異常時(shí))必須確保將其正確的關(guān)閉,否則就有可能耗盡數(shù)據(jù) 庫連接從而導(dǎo)致系統(tǒng)崩潰。二、直接使用標(biāo)準(zhǔn)接口編程意味著開發(fā)人員需要在代碼中構(gòu)造 與數(shù)據(jù)庫相關(guān)的查詢語句,一旦數(shù)據(jù)模型發(fā)生了變化,那么必須手工修改四處散布的查詢 語句以及代碼。三、大多數(shù)標(biāo)準(zhǔn)接口所提供的API方法都可能拋出已檢測的DBExc印tion, 開發(fā)人員不僅要保證捕獲這些異常,而且還要保證一旦異常拋出會(huì)執(zhí)行相應(yīng)的清除工作。 此外,DBException的異常處理邏輯往往非常相似,導(dǎo)致持久層中會(huì)出現(xiàn)大量重復(fù)代碼, 降低了系統(tǒng)的可維護(hù)性。四、直接使用標(biāo)準(zhǔn)接口往往會(huì)導(dǎo)致應(yīng)用程序與數(shù)據(jù)源之間的高 度耦合,而高耦合、高重復(fù)是使得程序難以測試的兩個(gè)主要原因(J. B. Rainberger,Scott Stirling. JUnit Recipes :Practical Methods for Programmer Testing[M]. Manning Publications Co. ,2005.)。鑒于直接使用標(biāo)準(zhǔn)數(shù)據(jù)庫接口的諸多弊端,一些持久化中間件試圖在標(biāo)準(zhǔn)接口之 上提供一層輕量級(jí)的封裝來解決這些問題(汪萌,曲俊華.基于Hibernate技術(shù)的持久層 解決方案及實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,(03).)。這些中間件為用戶隱藏了使用標(biāo)準(zhǔn) 接口的大部分細(xì)節(jié),帶來了透明的數(shù)據(jù)持久化體驗(yàn)。相對(duì)于直接使用標(biāo)準(zhǔn)接口,使用持久化 中間件可以幫助開發(fā)人員節(jié)省大量的時(shí)間。但持久化中間件也存在一個(gè)重要的缺陷,即只 提供了對(duì)于某一個(gè)標(biāo)準(zhǔn)接口的封裝,使用這些中間件進(jìn)行數(shù)據(jù)持久化仍然會(huì)引起信息系統(tǒng) 與底層的數(shù)據(jù)庫較高的耦合度,如果信息系統(tǒng)由于某種原因要將現(xiàn)有數(shù)據(jù)庫更換為另一種 異構(gòu)數(shù)據(jù)庫(如從關(guān)系數(shù)據(jù)庫變成目錄數(shù)據(jù)庫),則需要付出較為沉重的代價(jià)。更重量級(jí)的J2EE持久層框架彌補(bǔ)了持久層中間件在異構(gòu)數(shù)據(jù)庫集成方面 的不足,它們符合目前J2EE平臺(tái)的持久化規(guī)范,并且可以集成各種異構(gòu)數(shù)據(jù)庫的標(biāo) 準(zhǔn)訪問接口。然而這些功能強(qiáng)大的持久層框架往往非常復(fù)雜而且體積龐大。例如 DataNucleus(DaanucleusCommunity. Daanucleus[EB/0L]. http://www.datanucleus. org/. ) 2. 1. ORelease的核心JAR包的大小就接近2MB。不僅如此,要想使用DataNucleus 的全部功能還需要許多額外的JAR包,如asm、ehcache, poi等,共計(jì)19. 5MB。如此重量級(jí) 的持久化框架對(duì)于一些小型Web信息系統(tǒng)來說實(shí)在過于龐大,程序員要熟練掌握類似的持 久化框架并發(fā)揮它的優(yōu)勢也絕非易事。綜上,J2EE平臺(tái)下的已有數(shù)據(jù)持久化方法的缺點(diǎn)如下第一,標(biāo)準(zhǔn)接口功能強(qiáng)大卻難以使用;第二,簡單的持久化中間件雖然在一定程度上簡化了標(biāo)準(zhǔn)接口的使用,但仍然因 為與數(shù)據(jù)庫類型高度耦合而受到了限制;第三,功能強(qiáng)大的持久化框架可以讓我們徹底擺脫對(duì)于底層數(shù)據(jù)庫的考慮、專心 于業(yè)務(wù)邏輯的處理,卻結(jié)構(gòu)復(fù)雜且難于掌握。針對(duì)需要快速開發(fā)的小型信息系統(tǒng),需要一種簡單易用、能夠低成本的在各種異 構(gòu)數(shù)據(jù)庫之間進(jìn)行遷移的J2EE數(shù)據(jù)持久化方法。該方法接口明確、易于開發(fā)、所有操作 完全符合面向?qū)ο蟮乃枷?、能夠集成可通過J2EE標(biāo)準(zhǔn)接口訪問的多種異構(gòu)數(shù)據(jù)庫、只有很 少或者沒有第三方依賴、能夠通過對(duì)Java實(shí)體對(duì)象進(jìn)行CRUD (ffikipedia. CRUD[EB/0L]. http://en. wikipedia. org/wiki/Create,_read,_update_and_delete)操作。使用該方法 進(jìn)行開發(fā)的Web信息系統(tǒng),能夠達(dá)到簡單便捷的構(gòu)建系統(tǒng)持久化層、通過簡單配置即可實(shí) 現(xiàn)異構(gòu)數(shù)據(jù)庫之間的持久化遷移。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有持久化技術(shù)中存在的一系列問題,提供J2EE環(huán)境下 的通用數(shù)據(jù)持久化方法及系統(tǒng)。本發(fā)明的技術(shù)方案為一種基于J2EE的數(shù)據(jù)持久化方法,包括以下步驟1)用與底層數(shù)據(jù)庫相關(guān)的注釋語言對(duì)待持久化的Java類進(jìn)行映射元數(shù)據(jù)標(biāo)記;2)構(gòu)建待持久化Java類對(duì)象,對(duì)對(duì)象的屬性值進(jìn)行賦值;3)構(gòu)建Java實(shí)體對(duì)象查詢樹。4)以創(chuàng)建的待持久化Java類對(duì)象和Java實(shí)體對(duì)象查詢樹為參數(shù),調(diào)用持久化接 口進(jìn)行持久化操作。所述的映射元數(shù)據(jù)包括類元數(shù)據(jù)和屬性元數(shù)據(jù),類元數(shù)據(jù)指定Java實(shí)體對(duì)象類 中的主鍵屬性并描述Java實(shí)體對(duì)象類與底層數(shù)據(jù)庫結(jié)構(gòu)之間的映射關(guān)系;屬性元數(shù)據(jù)描 述Java實(shí)體對(duì)象屬性與底層數(shù)據(jù)庫數(shù)據(jù)項(xiàng)之間的關(guān)系。所述持久化接口包括 isObjectExist 接口、saveOb ject 接口、loadOb ject 接口、 getObjects 接口、updateObject 接口、updateObject 接口禾口 deleteObject 接口,其中,isObjectExist接口判斷待持久化Java類對(duì)象是否已經(jīng)存在;saveObject接口保存待持久化Java類對(duì)象到底層數(shù)據(jù)庫中;loadOb ject接口從數(shù)據(jù)庫中讀取一個(gè)滿足約束條件的對(duì)象;getObjects接口從數(shù)據(jù)庫中讀取所有滿足約束條件的對(duì)象;updateObject接口將數(shù)據(jù)庫中滿足約束條件的對(duì)象進(jìn)行更新;deleteObject接口從數(shù)據(jù)庫中刪除符合約束條件的對(duì)象。所述持久化操作的方法為 A、從待持久化Java類提供的數(shù)據(jù)讀取接口,讀取Java實(shí)體對(duì)象數(shù)據(jù)域的值,將所 述值轉(zhuǎn)換為底層數(shù)據(jù)庫數(shù)據(jù)要求的類型和格式;B、將Java實(shí)體對(duì)象查詢樹解析為與底層數(shù)據(jù)庫相對(duì)應(yīng)的數(shù)據(jù)查詢約束語句;C、按照底層數(shù)據(jù)庫操作語言要求生成數(shù)據(jù)庫操作語句;D、以C步驟生成的數(shù)據(jù)庫操作語句為參數(shù),調(diào)用底層數(shù)據(jù)庫的標(biāo)準(zhǔn)接口,進(jìn)行數(shù) 據(jù)操作。將所述值轉(zhuǎn)換類型和格式的方法為第一步將所述值按照底層數(shù)據(jù)庫的類型與格式進(jìn)行重新組裝;第二步調(diào)用數(shù)據(jù)匯的賦值函數(shù)完成組裝后數(shù)據(jù)的持久。所述查詢樹包括邏輯節(jié)點(diǎn)和表達(dá)式節(jié)點(diǎn)。所述邏輯節(jié)點(diǎn)包含一個(gè)或多個(gè)邏輯或表達(dá)式節(jié)點(diǎn)作為子節(jié)點(diǎn);表達(dá)式節(jié)點(diǎn)表達(dá)屬 性名、屬性值及屬性名和屬性值之間的關(guān)系。所述的數(shù)據(jù)庫操作語句以持久化接口類型區(qū)分操作類型,以數(shù)據(jù)查詢約束語句表 示查詢約束條件,采用對(duì)象類的映射元數(shù)據(jù)指定操作位置。本發(fā)明的另一個(gè)目的是提供基于J2EE的數(shù)據(jù)持久化系統(tǒng),包括數(shù)據(jù)類型適配器、 查詢語言解析器和操作語言解析器數(shù)據(jù)類型適配器,將Java實(shí)體對(duì)象數(shù)據(jù)域的值轉(zhuǎn)換成為符合底層數(shù)據(jù)庫要求的
6格式和類型。查詢語言解析器,將Java實(shí)體對(duì)象查詢樹解析為相應(yīng)的數(shù)據(jù)查詢約束語句;操作語言解析器,根據(jù)調(diào)用的持久化接口類型、標(biāo)記待持久化Java類對(duì)象的映射 元數(shù)據(jù)和數(shù)據(jù)查詢約束語句生成數(shù)據(jù)庫操作語句。與現(xiàn)有數(shù)據(jù)持久化方法相比,本發(fā)明的方法解決了如下問題第一,通過向用戶提供一組純Java的異構(gòu)數(shù)據(jù)庫通用訪問接口,屏蔽了異構(gòu)數(shù)據(jù) 庫對(duì)信息系統(tǒng)所提供接口的差異,使信息系統(tǒng)與底層數(shù)據(jù)庫類型完全解耦,把接口使用者 從大量的數(shù)據(jù)庫配置細(xì)節(jié)和操作編碼當(dāng)中解放出來。第二,借助關(guān)于持久化類的一些映射信息和數(shù)據(jù)類型適配器,程序員不必考慮 Java實(shí)體對(duì)象與底層數(shù)據(jù)庫的“阻抗不匹配”(田珂,謝世波,方馬.J2EE數(shù)據(jù)持久層的解 決方案[J].計(jì)算機(jī)工程,2003,(22).),降低了信息系統(tǒng)持久化層的開發(fā)難度。第三,使用 Java Annotation (Oracle Corporation. JDBC[EB/0L]. http:// download, oracle, com/javase/1. 5. 0/docs/guide/language/annotations, html) $ X^t Java類對(duì)象的標(biāo)記,實(shí)現(xiàn)了配置文件與實(shí)體數(shù)據(jù)的完整統(tǒng)一,避免了在配置文件與實(shí)體數(shù) 據(jù)分離模式下對(duì)其一進(jìn)行修改所造成的不同步性。第四,進(jìn)行數(shù)據(jù)持久化時(shí)不依賴于任何腳本語言,整個(gè)過程完全是Java接口調(diào) 用,與數(shù)據(jù)庫相關(guān)的操作語言由框架根據(jù)Java類及其注釋統(tǒng)一生成,減輕了開發(fā)者的負(fù) 擔(dān),避免了由于開發(fā)者對(duì)數(shù)據(jù)庫語言使用不規(guī)范造成的數(shù)據(jù)損毀。
圖1是數(shù)據(jù)持久化方法的流程框圖;圖2是轉(zhuǎn)換數(shù)據(jù)類型和格式的方法流程示意圖;圖3是Java實(shí)體對(duì)象查詢樹示意圖。圖4是本發(fā)明系統(tǒng)中各模塊協(xié)作示意圖。圖5是實(shí)施例中的基于異構(gòu)數(shù)據(jù)庫的輕量級(jí)持久層框架的結(jié)構(gòu)示意圖。。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明方法進(jìn)行詳細(xì)說明。本發(fā)明方法旨在為小型Web信息系統(tǒng)開發(fā)者提供一個(gè)快速搭建數(shù)據(jù)持久層的途 徑,為了滿足絕大多數(shù)小型信息系統(tǒng)的數(shù)據(jù)持久化需求而又不至于過于臃腫,本方法將數(shù) 據(jù)持久操作抽象為六種持久化操作接口。各接口的參數(shù)及返回值如表1所示。使用這些接 口,用戶可以直接面向被映射元數(shù)據(jù)標(biāo)記過的Java實(shí)體對(duì)象實(shí)現(xiàn)數(shù)據(jù)的持久化。表1LAPFA數(shù)據(jù)庫統(tǒng)一訪問接口
權(quán)利要求
一種基于J2EE的數(shù)據(jù)持久化方法,包括下列步驟1)用與底層數(shù)據(jù)庫相關(guān)的注釋語言對(duì)待持久化的Java類進(jìn)行映射元數(shù)據(jù)標(biāo)記;2)構(gòu)建待持久化Java類對(duì)象,對(duì)對(duì)象的屬性值進(jìn)行賦值;3)構(gòu)建Java實(shí)體對(duì)象查詢樹。4)以創(chuàng)建的待持久化Java類對(duì)象和Java實(shí)體對(duì)象查詢樹為參數(shù),調(diào)用持久化接口進(jìn)行持久化操作。
2.根據(jù)權(quán)利要求1所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述持久化 ^ □ isObjectExist ^ saveObject ^ loadObject ^ getObjects ^ updateObject 接口、updateObject 接口禾口 deleteObject 接口,其中,isObjectExist接口判斷待持久化Java類對(duì)象是否已經(jīng)存在; saveObject接口保存待持久化Java類對(duì)象到數(shù)據(jù)庫中; loadObject接口從數(shù)據(jù)庫中讀取一個(gè)滿足約束條件的對(duì)象; getObjects接口從數(shù)據(jù)庫中讀取所有滿足約束條件的對(duì)象; updateObject接口將數(shù)據(jù)庫中滿足約束條件的對(duì)象進(jìn)行更新; deleteObject接口從數(shù)據(jù)庫中刪除符合約束條件的對(duì)象。
3.根據(jù)權(quán)利要求2所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述的映射元數(shù)據(jù) 包括類元數(shù)據(jù)和屬性元數(shù)據(jù),類元數(shù)據(jù)指定Java實(shí)體對(duì)象類中的主鍵屬性并描述Java實(shí) 體對(duì)象類與底層數(shù)據(jù)庫結(jié)構(gòu)之間的映射關(guān)系;屬性元數(shù)據(jù)描述Java實(shí)體對(duì)象屬性與底層 數(shù)據(jù)庫數(shù)據(jù)項(xiàng)之間的關(guān)系。
4.根據(jù)權(quán)利要求2所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述持久化操作的 方法為A、從待持久化Java類提供的數(shù)據(jù)讀取接口,讀取Java實(shí)體對(duì)象數(shù)據(jù)域的值,將所述值 轉(zhuǎn)換為底層數(shù)據(jù)庫數(shù)據(jù)要求的類型和格式;B、將Java實(shí)體對(duì)象查詢樹解析為與底層數(shù)據(jù)庫相對(duì)應(yīng)的數(shù)據(jù)查詢約束語句;C、按照底層數(shù)據(jù)庫操作語言要求生成數(shù)據(jù)庫操作語句;D、以C步驟生成的數(shù)據(jù)庫操作語句為參數(shù),調(diào)用底層數(shù)據(jù)庫的標(biāo)準(zhǔn)接口,進(jìn)行數(shù)據(jù)操作。
5.根據(jù)權(quán)利要求4所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于將所述值轉(zhuǎn)換類型 和格式的方法為第一步將所述值按照底層數(shù)據(jù)庫的類型與格式進(jìn)行重新組裝; 第二步調(diào)用數(shù)據(jù)匯的賦值函數(shù)完成組裝后數(shù)據(jù)的持久。
6.根據(jù)權(quán)利要求2所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述查詢樹包括邏 輯節(jié)點(diǎn)和表達(dá)式節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求6所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述邏輯節(jié)點(diǎn)包含 一個(gè)或多個(gè)邏輯或表達(dá)式節(jié)點(diǎn)作為子節(jié)點(diǎn);表達(dá)式節(jié)點(diǎn)表達(dá)屬性名、屬性值及屬性名和屬 性值之間的關(guān)系。
8.根據(jù)權(quán)利要求4所述的基于J2EE的數(shù)據(jù)持久化方法,其特征在于所述的數(shù)據(jù)庫操作 語句以持久化接口類型區(qū)分操作類型,以數(shù)據(jù)查詢約束語句表示查詢約束條件,采用對(duì)象 類的映射元數(shù)據(jù)指定操作位置。
9. 一種基于J2EE的數(shù)據(jù)持久化系統(tǒng),包括映射元數(shù)據(jù)讀取器、數(shù)據(jù)類型適配器、查詢 語言解析器和操作語言解析器,數(shù)據(jù)類型適配器,將Java實(shí)體對(duì)象數(shù)據(jù)域的值轉(zhuǎn)換成為符合底層數(shù)據(jù)庫要求的格式 和類型;查詢語言解析器,將Java實(shí)體對(duì)象查詢樹解析為相應(yīng)的數(shù)據(jù)查詢約束語句; 操作語言解析器,根據(jù)調(diào)用的持久化接口類型、標(biāo)記待持久化Java類對(duì)象的映射元數(shù) 據(jù)和數(shù)據(jù)查詢約束語句生成數(shù)據(jù)庫操作語句。
全文摘要
本發(fā)明公開了一種基于J2EE的數(shù)據(jù)持久化方法和系統(tǒng),其方法包括1)用與底層數(shù)據(jù)庫相關(guān)的注釋語言對(duì)待持久化的Java類進(jìn)行映射元數(shù)據(jù)標(biāo)記;2)構(gòu)建待持久化Java類對(duì)象,對(duì)對(duì)象的屬性值進(jìn)行賦值;3)構(gòu)建Java實(shí)體對(duì)象查詢樹;4)以創(chuàng)建的待持久化Java類對(duì)象和Java實(shí)體對(duì)象查詢樹為參數(shù),調(diào)用持久化接口進(jìn)行持久化操作。系統(tǒng)包括數(shù)據(jù)類型適配器、查詢語言解析器和操作語言解析器。本發(fā)明的方法和系統(tǒng)解決了Java實(shí)體對(duì)象與底層數(shù)據(jù)庫的“阻抗不匹配”,屏蔽了異構(gòu)數(shù)據(jù)庫對(duì)信息系統(tǒng)所提供接口的差異,不依賴于任何腳本語言,整個(gè)過程完全是Java接口調(diào)用,降低了持久化層的開發(fā)難度。
文檔編號(hào)G06F9/44GK101980213SQ20101056253
公開日2011年2月23日 申請日期2010年11月23日 優(yōu)先權(quán)日2010年11月23日
發(fā)明者屈夏, 楊燕, 王帥, 鐘華 申請人:中國科學(xué)院軟件研究所