2 高級數(shù)據(jù)存取框架設計
采用會話外觀(Session Facade,簡稱SF)模式實現(xiàn)業(yè)務邏輯與持久性邏輯的關聯(lián)。會話外觀模式主要用于處理集中的工作流,為表示層提供統(tǒng)一、粗粒度的對象訪問。
實體組件可提供一種特殊的數(shù)據(jù)處理方法,但無標準Java接口,缺乏靈活性。因此會話組件利用通用的Java數(shù)據(jù)存取接口訪問數(shù)據(jù)。使用實體組件存在諸多問題:復雜性導致的性能降低;BMP中的n+l查詢發(fā)現(xiàn)者等。雖然使用JDBC容易出錯,代碼量大,但將操作JDBC的代碼封裝成高級API,大大抑制相應缺陷,并提供使用存儲過程。這樣就可以跨越多個數(shù)據(jù)庫表的更新;RDBMS從非J2EE環(huán)境移植到J2EE環(huán)境等。
為了能應用于多種數(shù)據(jù)庫,保證設計的可移植性,將業(yè)務邏輯與JDBC相應成份分離,把JDBC的使用封裝到一個抽象層中,屏蔽對JDBC和具體RDBMS的依賴性。這樣不僅保持了系統(tǒng)的靈活性,而且層次分明,易于維護。
3 高級數(shù)據(jù)存取框架模型與實現(xiàn)
封裝數(shù)據(jù)存取接口和實現(xiàn),以熟知的產(chǎn)品表Product和銷售明細表SellDetail為例,其中,Product具有產(chǎn)品標識ID和產(chǎn)品名NAME;SellDetail具有產(chǎn)品ID,銷售日期DATE和銷售量AMOUNT的字段。這樣可根據(jù)產(chǎn)品ID查詢產(chǎn)品的銷售清單。
3.1 根據(jù)業(yè)務需求設置數(shù)值傳遞對象類Value Object
對于查詢操作,輸入產(chǎn)品ID,則輸出產(chǎn)品名、銷售日期和銷售數(shù)量:而對于插入操作,輸入產(chǎn)品ID、銷售日期和銷售數(shù)量。數(shù)值傳遞對象類構(gòu)造如下:
傳遞數(shù)據(jù)有兩種方法:一是將輸入數(shù)據(jù)直接設置到值對象類的相應變量中,再將該類實例作為參數(shù),調(diào)用EJB端會話Bean中的相應方法;二是只傳遞輸入數(shù)據(jù)的變量,在會話Bean中再將輸入數(shù)據(jù)的變量值設置到值對象類中進行數(shù)據(jù)存取。通常在會話Bean中設有合法性檢驗功能,僅當用戶身份合法且具有授權才允許查詢,否則會拒絕請求。采用第二種方法效率高。不設數(shù)值傳遞對象類,直接使用動態(tài)數(shù)組接收并傳遞數(shù)據(jù)也可實現(xiàn)相應的功能。
3.2 SellDataDAFramework類
該類為關鍵類,包含具體數(shù)據(jù)存取接口實現(xiàn)類的對象。
在大多數(shù)問題中都使用了異常SOLException,從SOLExcep—tion中提取信息,一般用戶很難理解,只有通過檢查數(shù)據(jù)庫供應商提供的特有代碼,才能弄清異常原委。
4 DAccess類
DAccess類實現(xiàn)了SelIDataDAccess接口,一個接口中CRUD方法是唯一的,針對不同方法,需要重新派生一個實現(xiàn)類,例如DAccess01、DAccess02等。SellDataDAFramework使用DAccess類的對象起索引或指針的作用,并將其加入到vecDAccess中,通過getDAccess方法來實現(xiàn),從而執(zhí)行具體的CRUD操作。下面以DAccess0l為例進行說明。
5 調(diào)用高級數(shù)據(jù)存取框架
以會話Bean為例,說明如何調(diào)用高級數(shù)據(jù)存取框架。會話Bean所含的相應方法接收到參數(shù)后,先檢驗輸入合法性和權限等業(yè)務,再調(diào)用DAccess類進行數(shù)據(jù)存取操作。
6 分析研究高級數(shù)據(jù)存取框架
為了解決數(shù)據(jù)庫類型和數(shù)據(jù)存儲形式的差異,Sun JavaCenter提出了數(shù)據(jù)訪問對象(Data Access Obiect,簡稱DAO)模式,使用DAO抽象和封裝所有對數(shù)據(jù)源的訪問和連接,提供用戶統(tǒng)一的訪問方法,其內(nèi)部實現(xiàn)對用戶是透明的?;贒AO模式的實現(xiàn)框架有多種方式。
(1)JDBC方式將JDBC API操作封裝成高級類,供會話組件調(diào)用,該類包括存取數(shù)據(jù)分和獲取數(shù)據(jù)庫連接。
(2)會話組件方式 使用會話組件控制數(shù)據(jù)存取,可使用應用服務器所提供的基礎結(jié)構(gòu)服務,如聲明式訪問控制和資源池等,但業(yè)務邏輯和持久性邏輯混在一起。
(3)實體組件方式 采用實體組件作為數(shù)據(jù)存取手段.但導致實體組件的復雜性和性能降低。
其中JDBC方式和所討論的框架相似,最大不同在于所討論的框架是將數(shù)據(jù)庫連接部分在會話組件中實現(xiàn),會話組件中統(tǒng)一關閉連接符。如果連續(xù)兩次以上訪問數(shù)據(jù)庫,則無需重建連接。
基于JDBC的高級數(shù)據(jù)存取框架把業(yè)務邏輯和數(shù)據(jù)存取部分由不同類處理,徹底解決了二者間的重疊問題。經(jīng)驗證該框架運行良好。在會話Bean中,只需取得與具體數(shù)據(jù)庫的連接以及指定在哪個DAFramework中獲得合理DAccess接口實例即可。針對不同的數(shù)據(jù)庫提供商,只需在會話Bean中獲得各自的數(shù)據(jù)連接符,將其傳給DAFramework,而不用改變框架類中的代碼,測試結(jié)果證明,該數(shù)據(jù)存取框架相比傳統(tǒng)的數(shù)據(jù)存取方法易于實現(xiàn)代碼級復用。
異常分級處理實現(xiàn)是將JDBC異常轉(zhuǎn)換成用戶理解的普通異常,這需要根據(jù)SQLException所含的供應方錯誤代碼及SQLState碼分類處理,最后解析出具體錯誤。
基于JDBC的框架不包含連接數(shù)據(jù)庫,框架內(nèi)各個組件與具體數(shù)據(jù)庫無關,即當數(shù)據(jù)庫發(fā)生非結(jié)構(gòu)性變化時,如服務器位置或數(shù)據(jù)庫類型變更,組件保持不變,故易用應用生成器(Application Generator)自動生成框架實例,并向最終用戶提供可視化交互界面。
7 結(jié)語
針對應用開發(fā)存在的問題,尋求更有效的數(shù)據(jù)存取方法,提出一種基于JDBC的高級數(shù)據(jù)存取框架,該框架旨在用于分離持久邏輯與業(yè)務邏輯,提高軟件開發(fā)效率。結(jié)合工程實際表明基于JDBC的高級數(shù)據(jù)存取框架具有優(yōu)越的代碼復用,易于實現(xiàn)。
北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...
關鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心要問機器人公司哪家強,波士頓動力絕對是其中的佼佼者。近來年該公司在機器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機器人會后空翻,自主爬樓梯等。這不,波士頓動力又發(fā)布了其機器人組團跳男團舞的新視頻,表演的機器人包括...
關鍵字: 機器人 BSP 工業(yè)機器人 現(xiàn)代汽車