陳欣
摘 要:該文主要探討基于java語言在管理信息系統(tǒng)中數(shù)據(jù)存取層的設計方式和方法的探索,將MVC與三層構(gòu)架進行結(jié)合,研究DAO模式在管理信息系統(tǒng)的作用,將業(yè)務邏輯與數(shù)據(jù)訪問技術(shù)更好的融合,并結(jié)合管理信息系統(tǒng)實例來改善DAO層的設計,通過使用模板模式簡化代碼使得開發(fā)過程更加簡潔,可以更好的提高系統(tǒng)架構(gòu)的復用性、拓展性及可維護性,同時也更好的改善了系統(tǒng)的性能,提高程序的安全系數(shù)。
關(guān)鍵詞:管理信息系統(tǒng) DAO MVC設計模式 JDBC
中圖分類號:C93 文獻標識碼:A 文章編號:1672-3791(2015)04(b)-0026-02
管理信息系統(tǒng)(MIS),是計算機度應用當中相當普遍和普及的軟件系統(tǒng),主要用于記錄、存儲、修改、統(tǒng)計查詢生產(chǎn)生活中產(chǎn)生的數(shù)據(jù),避免人工處理數(shù)據(jù)的弊端,加快數(shù)據(jù)的統(tǒng)計和分析過程。應用程序在相當程度上需要使用持久性數(shù)據(jù)。對于信息系統(tǒng)而言,持久性存儲[1]是通過不同機制實現(xiàn)的。信息系統(tǒng)的設計一般都采用三層結(jié)構(gòu)來設計,基于java三層構(gòu)架的系統(tǒng)中數(shù)據(jù)存取層的設計主要是通過JDBC驅(qū)動來執(zhí)行標準的SQL語句,進行數(shù)據(jù)庫的增刪改查。對于千篇一律的增、刪、改、查寫起來不僅麻煩,而且容易出錯。該文介紹一種設計方法來改善DAO層的設計,從而減輕程序員的工作負擔,降低出錯的可能性。
1 管理信息系統(tǒng)的三層體系結(jié)構(gòu)
管理信息系統(tǒng)目前主要采用B/S結(jié)構(gòu)。以瀏覽器(Browser)作為客戶端,Web服務器作為服務端,數(shù)據(jù)庫服務器和Web服務器可以安裝到一臺電腦上作為服務器也可以放在不同的電腦上,Web服務器通過JDBC驅(qū)動程序訪問數(shù)據(jù)庫。Web服務器通過接受請求,并將請求轉(zhuǎn)給Servlet類進行處理,將servlet處理的結(jié)果響應給瀏覽器。系統(tǒng)的三層體系結(jié)構(gòu)如圖1所示。
2 系統(tǒng)的設計模式(MVC和三層設計的結(jié)合)
MVC設計模式是目前B/S設計當中最常采用的一種模式,通過使輸入、處理、輸出在設計分離,使內(nèi)容和顯示相分離,將應用程序分成三個核心部件:模型、視圖、控制器。他們各自處理自己的任務。簡化編碼,降低系統(tǒng)的復雜性。同時也有利于團隊開發(fā)中的分工合作,是一種創(chuàng)建軟件的比較好的途徑。
MVC模式在實現(xiàn)上采用三層結(jié)構(gòu)來設計如圖2所示,表示層:負責調(diào)用業(yè)務邏輯層的方法,將數(shù)據(jù)展現(xiàn)給前端用戶,主要是網(wǎng)頁jsp頁面。業(yè)務邏輯層:專注于業(yè)務邏輯的處理,針對具體的業(yè)務進行處理。數(shù)據(jù)訪問層:直接操作數(shù)據(jù)庫,對數(shù)據(jù)進行增、刪、改、查的操作。層和層之間通過domain對象來相互通信??刂破鞑捎肧ervlet來實現(xiàn),在控制器中調(diào)用業(yè)務邏輯層的方法并控制數(shù)據(jù)到表示層的交互。
3 數(shù)據(jù)存取層技術(shù)DAO
數(shù)據(jù)庫是管理信息系統(tǒng)的核心內(nèi)容,DAO層的主要作用就是將與持久化相關(guān)的代碼從業(yè)務邏輯層中分離出來,把數(shù)據(jù)庫層對數(shù)據(jù)庫進行操作的代碼全部封裝到一個DAO類中[2],把業(yè)務流程和規(guī)則放在一邊,把持久化相關(guān)的放在另一邊。目前,Web與數(shù)據(jù)庫的接口技術(shù)有很多,其中JDBC是Java程序連接和存取數(shù)據(jù)庫的應用程序接口,由一組用Java語言編寫的類與接口組成,是執(zhí)行SQL語句的Java API。該文介紹的管理信息系統(tǒng)中,在數(shù)據(jù)的存取方面,采用了JSP/Servlet+JDBC的技術(shù),即客戶端不產(chǎn)生數(shù)據(jù)庫查詢命令,客戶端上的瀏覽器通過URL和中間層的Web服務器建立連接。Web服務器主要負責接收本地或遠程瀏覽器的HTTP數(shù)據(jù)請求,然后中間層的Servlet收到請求后,通過執(zhí)行程序中的SQL語句,利用JDBC提供的標準API對數(shù)據(jù)庫進行訪問和相應的操作處理。Servlet再將查詢的數(shù)據(jù)傳給JSP,最后生成標準的JSP頁面將結(jié)果返回給提出請求的瀏覽器。這樣,不僅將客戶端與數(shù)據(jù)庫服務器端分開,同時提高了數(shù)據(jù)庫的訪問效率。
4 管理信息系統(tǒng)DAO構(gòu)建實例
為了更好地說明使用JSP/Servlet構(gòu)建三層式管理信息系統(tǒng)的方法,作者將舉例分析設計一個商品郵購管理信息系統(tǒng)。這個商品郵購管理信息系統(tǒng)利用Java語言進行服務器端應用程序的開發(fā),使用IBM公司的Webshpere作為應用服務器,數(shù)據(jù)庫管理系統(tǒng)選用SQL Server 2005,數(shù)據(jù)庫接口程序使用JDBC2接口。整個系統(tǒng)使用基于Web的方式來實現(xiàn)郵購業(yè)務的客戶管理、職員管理、訂單管理、商品管理、出庫管理、入庫管理等業(yè)務處理、流程控制、權(quán)限控制、查詢統(tǒng)計以及打印等功能。其中詳細分析用戶登錄功能。
4.1 數(shù)據(jù)庫設計
對于一般的系統(tǒng)都會有一張用戶表,作為用戶登錄注冊之用。表結(jié)構(gòu)見表1。
其中去掉異常的處理,在實際使用的時候可以適當?shù)募由袭惓!T擃愔饕糜贒AO在獲取數(shù)據(jù)庫連接或者釋放數(shù)據(jù)庫資源的時候使用。
4.2 DAO層的設計
開發(fā)人員用 DAO模式將底層的數(shù)據(jù)訪問操作和上層的業(yè)務邏輯分開[3],主要是給業(yè)務層調(diào)用,這樣保證除了DAO層之外,在別的地方看不到SQL語句,便于明確的分工合作。DAO層的設計,一般會給每張表都增加一個DAO類,那么在設計的時候,經(jīng)常會出現(xiàn)打開連接關(guān)閉連接的操作。因此可以抽象成一個父類,我們在父類中完成這些繁瑣的重復的工作。請看例子。
下面是子類的設計:充分利用多態(tài)的原理,讓父類處理公共的操作,而把每個表特別單獨處理的部分,比如記錄到對象的轉(zhuǎn)換、SQL語句,參數(shù),放到子類當中來實現(xiàn)。這樣封裝好的父類,可以為子類的編寫節(jié)省大量的時間
客戶端通過業(yè)務層的類來調(diào)用DAO層的方法來實現(xiàn)業(yè)務功能。
5 結(jié)語
該文描述了一個基于java三層構(gòu)架的管理信息系統(tǒng)中DAO層的編寫方案。該方案通過抽象DAO層的公用代碼,使得DAO層的編寫將會異常的簡單,只需要編寫實體對象和記錄的對應關(guān)系、SQL語句和參數(shù),將面向?qū)ο蟮哪0迥J酱罅康膽茫蟠蟮暮喕薉AO的編寫。
參考文獻
[1] SUBRAHM ANYAM ALLAMARAJU.J2EE服務器端高級編程(Professional Java Server Programming J2EE Edition)[M].北京:機械工業(yè)出版社(Beijing:China M achine Press),2001.
[2] 鄭翔.JAVA DAO模式淺析[J].科教文匯:下旬刊,2010(8):75-76.
[3] 孟晨,趙春亮,張建國.泛型DAO模式在Java Web開發(fā)中的應用[J].計算機應用與軟件,2012(1):175-177,210.