常萬軍,馬世霞
(1.貴州大學,貴州 貴陽 552205;2.河南機電高等專科學校,河南 新鄉 453002)
Web程序開發中的JDBC技術改進研究
常萬軍1,2,馬世霞2
(1.貴州大學,貴州 貴陽 552205;2.河南機電高等專科學校,河南 新鄉 453002)
文章基于MVC模式,通過建立DBAccess類實現了JDBC對象化改進。利用繼承于改進的Hashtable類的Data類和String[][]類的設計,實現了JDBC易用性的改進。在實現對象化和易用性改進方案的基礎上開發出的Web系統經測試能夠正常運行,很好地說明了改進方案的可行性。
MVC;技術改進;JDBC
隨著網絡技術的不斷發展,對Web數據庫技術的發展要求越來越高。但是由于在網絡環境下,Web數據庫的體系結構、訪問方式、訪問的用戶以及客戶端簡化等都與傳統數據庫有很大的不同,要使Web數據庫的應用得到有效提高,需引入中間件這一技術,使得應用程序利可以用中間件共享各種資源,特別是分布式的網絡資源,也使軟件開發者不必在應用程序間的通信、互操作以及它們的效率、可靠性、容錯性、安全性、完整性等問題上耗費太多精力,提高應用程序開發的效率。JDBC(Java Data Base Connectivity)是基于中間件平臺的一種數據庫訪問技術,他能夠很好的與ODBC(Open DataBase Connectivity)結合,具有可移植性、平臺無關性。[1~4]但是由于JDBC是基于面向過程的思想提供服務的,不符合面向對象的要求,同時其易用性不能使人滿意。本文討論了基于MVC模式的JDBC對象化改進等Web數據庫系統開發技術的改進方案,從而很好地保持了JDBC的優點并改進了其在Web系統開發中的缺點。
MVC 模式(Model-View-Controller),即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三層——模型層、視圖層、控制層。[5,6]視圖(View)代表用戶交互界面,繪制和顯示模型的數據,提交由控制器提供的數據。模型(Model)是業務流程/狀態的處理模塊,包括對業務數據的存取、加工、綜合等;維護應用程序的狀態和數據,可以接受來自視圖的查詢并做出響應;同時當模型的數據發生變化時,它把變化通知給視圖,視圖根據模型的變化來更新自己。模型的設計可以說是 MVC最主要的核心。控制(Controller)是基于應用程序的邏輯更新模型,它要告訴程序開發者,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求,控制層自身卻并不做任何的數據處理。控制層負責View和Model之間的流程控制,一方面是將用戶界面(View)的操作映射到具體的 Model,以完成具體的業務邏輯,另一方面是將通過Model處理完的業務數據及時反應到用戶界面(View)上。
1.2.1 基于MVC模式的JDBC對象化的改進
對于程序員來說,JDBC在數據庫連接時,整個數據庫連接過程并不是面向對象的,而是面向過程的。[7]JDBC每次連接數據庫,同一數據庫連接流程都需要從頭到尾編譯一次,使得數據庫連接過程繁瑣,編程效率低下。[8]另外,由于數據庫操作比較復雜,對于不同的數據庫操作 JDBC中提供不同的Statemeni方法,這樣加大了編程的工作量,也不符合面向對象的思想。
基于MVC設計思想,對JDBC的連接過程進行了改進。首先,將整個JDBC數據庫連接過程封裝入一個叫做DBAccess的類中,利用 DBAccess類定義的對象為程序員提供統一的編程接口;接著在 DBAccess類中創建一個 public方法,即DBControl方法,用DBControl方法作為DBAccess類中的控制層;然后用ExecuteUpdate()方法執行Insert、Update、Delete操作,用 ExecuteQuery()方法執行 select操作等。這些對數據操作所用到的方法的調用過程對于用戶來說是透明的,實現了MVC設計思想中的控制層的功能。
顯然,按照上述方法封裝的DBAccess類中,DBContro1方法起到了控制層的作用。用private函數來實現的ExecuteUpdate()、ExecuteQuery()等方法則實現了具體的數據庫連接等業務流程。ExecuteUpdate()、ExecuteQuery()等方法就是DBAeeess類中的模型層,對用戶來說是不可用的、透明的。而表示層并不在 DBAccess類中,因為在整個數據庫的連接過程中并不需要考慮數據庫連接結果最后應該如何使用。這樣,引入 MVC理念對JDBC的對象化進行改進,可以使基于JDBC的Web數據庫系統具有良好的可擴展性及靈活性。
1.2.2 JDBC移植性改進
在 Web程序開發過程中,針對不同的數據庫產品,JDBC是使用不同的JDBC數據庫驅動程序來實現的;在連接數據庫時,JDBC利用String字符串類型的參數,但是對不同的數據庫系統,字符串參數需要發生變化。這種數據庫連接方式對數據庫系統的依賴性非常強,使得JDBC在可移植性與速度的平衡方面很難令人滿意。
為改變 JDBC聯結方式對數據庫的依賴,創建一個 Const類,用來存儲整個程序所需要的各種常量,并將JDBC數據庫接連時所用的全部 string字符串類型的參數字符串變量作為Const類的全局變量存儲。當JDBC連接數據庫時,從Const類提取相應字符串變量傳遞給DBAccess類。
由于 Const類的引入,創建數據庫連接所需的字符串參數存儲在內部文件中,數據連接的速度會有很大的改觀。同時又因為各連接參數沒有存儲在 DBAccess類文件中,很好地保持了JDBC的可移植性。當數據庫產品改變時,我們提練并用某種方法改變存儲于Const類中的數據庫連接參數,對Const類重新編譯后即快速可順利連接改變后的數據庫,實現了可移植性與連接速度的統一。
1.2.3 JDBC返回值改進
JDBC數據庫連接操作的返回值類型,是JDBC默認的結果集類Resultset。Resultset類的功能十分強大,包含String、Int、Data等各種常用的數據類型。在傳統的JDBC開發中,Resultset中的數據程序員并不能直接使用,往往還需要將其轉化為其他能夠直接使用的數據類型。為解決此問題,提出了JDBC返回值的改進方案。
首先,建立Data類。Data類繼承于由Resultset類轉化后的Hashtable類型,這樣當創建JDBC數據庫的首次連接時,如果結果集類Resultset中的數據較多,利用繼承于Hashtable類的Data類可以實現結果集中數據的快速檢索,同時Data類繼承Hashtable類方法的基礎上,又具有特殊的的屬性和方法,可以滿足Web數據庫連接開發的特殊性要求。
接著建立String[][]這一數據類型。基于String[][]類型的特點,一方面它可以很輕松地將數據庫表中的數據轉化并存儲于其中,另一方面,String[][]類型中的 String類型數據很容易在JSP頁面上得到體現,因此,String[][]類的引入很方便地將Resultset中的數據轉化為JSP頁面的數據。
由此,利用Resultset類型、繼承于改進的Hashtable類型的Data類和String[][]類型,實現了對數據庫查詢操作的返回值的改進,使數據庫中的數據能夠根據用戶的要求在JSP頁面中得到顯示。
按照MVC設計模式思想,利用上述方法,將Web程序開發分為表示層、控制層和模型層。在 DBAccess類封裝了控制層和模型層,利用public方法DBControl來實現用戶請求的初步處理和數據分流,利用四個private方法來分別實現用戶不同的數據庫操作請求,而單獨建立的Const類和Data類更是輔助提高了Web程序開發的效率和Web程序的性能。
采用JAVA程序設計工具和Mysql數據庫系統,在實現上述改進方案的基礎上,開發出一款小型Web系統,能夠實現數據的編輯、插入、刪除和查詢等功能。依照MVC理念對該Web系統測試,系統也能正常運行。充分驗證了本文提出的技術改進方案的可行性和優越性。
基于MVC模式,實現了JDBC對象化改進和JDBC易用性的改進。利用DBAccess類實現了JDBC的對象化改進,利用繼承于 Hashtable類的 Data類和 String[][]類的設計實現了JDBC易用性的改進。本文設計改進方案,不只適用于Web程序系統,也可以應用于其他基于 JAVA平臺的軟件系統。此可以很好地用于基于JDBC連接的網絡數據庫系統的開發。
1 梁陳劍、張 威.JDBC3.0數據庫開發與設計[M].北京:北京希望電子出版社,2003.3
2 楊小平.JAVA項目案例導航[M].北京:科學出版社.2003.8
3 陸正武、張志立.JAVA 項目開發實踐(2)[M].北京:中國鐵道出版社,2005.7
4 李華鷹.Java中間件開發技術[M].北京:中國水利水電出版社,2005.8
5 陸榮幸、郁 洲等.J2EE平臺上MVC設計模式的研究與實現[J].計算機應用研究,2003.20(3):144~146
6 袁梅冷、黃煙波等.J2EE應用模型中MVC軟件體系結構的研究與應用[J].計算機應用研究,2003.20(3):147~149
7 何成萬、余秋惠.MVC模型2及Struts軟件框架的研究[J].計算機工程,2002(5):274~275
8 宋善德、郭 飛.基于Java的Web數據庫的連接池技術的研究[J].計算機工程與應用,2002.38(8):201~203
The study for improving JDBC technique in the development of the Web program
Chang Wanjun,MA Shixia
Based on the MVC model, it accomplishs to improve the objectification of JDBC through the establishment of DBAccess type.Through the designs of String [] [] type and Data type which inheritances from the improvement Hashtable type, it realizes to make JDBC easy.The Web system, designesd base on the program of improving objectification and ease for using of JDBC is able to be proper functioning by the test, which shows us that the program of improving is feasible.
MVC; technique improvement; JDBC
TP311
A
1000-8136(2010)15-0144-02