陳欣

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