張慧玲
(河北金融學(xué)院圖書(shū)館,河北保定071051)
計(jì)算機(jī)軟件在今天的圖書(shū)館圖書(shū)管理中起著非常重要的作用。計(jì)算機(jī)軟件可以幫助管理人員對(duì)圖書(shū)進(jìn)行迅速的檢索和管理,并且具有效率高、壽命長(zhǎng)、成本低等優(yōu)點(diǎn)。這是圖書(shū)管理信息化與科學(xué)化的趨勢(shì)。但是,仍然存在著大規(guī)模的圖書(shū)管理系統(tǒng)被用于許多小的或中等的圖書(shū)館的問(wèn)題,這將導(dǎo)致資源浪費(fèi)。因此,開(kāi)發(fā)商采取了一個(gè)流行的軟件開(kāi)發(fā)技術(shù)并提出來(lái)基于框架的圖書(shū)館管理解決方案。仿效源代碼和休眠模式框架結(jié)構(gòu)設(shè)計(jì)的體系,被分為呈現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)處理層。采用這項(xiàng)技術(shù),可以加強(qiáng)系統(tǒng)的可維護(hù)性和可復(fù)用性,降低系統(tǒng)的開(kāi)發(fā)和維護(hù)成本。
多元計(jì)算機(jī)結(jié)構(gòu)是一種被smalltalk-80廣泛使用的設(shè)計(jì)樣式,由施樂(lè)在1980s提出。多元計(jì)算機(jī)通過(guò)明確分隔商業(yè)邏輯、資料準(zhǔn)備和應(yīng)用行為,形成了模型/視圖/控制器結(jié)構(gòu)。描繪業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯的模式是應(yīng)用程序的主要部分。視圖是界面,通過(guò)這個(gè)界面,用戶可以對(duì)圖書(shū)進(jìn)行檢索和存取。但是它不可以被用戶改變。視圖是可以接受應(yīng)用行為同步更新的數(shù)據(jù)和用戶界面。因?yàn)橐粋€(gè)模型可以被多個(gè)界面重復(fù)使用,這樣可以改善應(yīng)用程序的可復(fù)用性??刂破鞯淖饔冒ń邮芸蛻舳说恼?qǐng)求、選擇適當(dāng)?shù)臉I(yè)務(wù)邏輯來(lái)操作,然后向用戶反饋?lái)憫?yīng)結(jié)果。
源代碼是雅加達(dá)阿帕奇的開(kāi)源項(xiàng)目。它是一個(gè)基于模型/視圖/控制器架構(gòu)的網(wǎng)絡(luò)應(yīng)用程序框架。源代碼項(xiàng)目是模塊化的組件。它使網(wǎng)絡(luò)應(yīng)用程序發(fā)展為具有靈活性、可重用性和簡(jiǎn)約性的特點(diǎn)。源代碼可以合理分隔業(yè)務(wù)邏輯、數(shù)據(jù)顯示和應(yīng)用行為。它使軟件開(kāi)發(fā)更加明晰和簡(jiǎn)潔,并改善了軟件的可維護(hù)性和可復(fù)用性。
模型/視圖/控制器用源代碼結(jié)構(gòu)繪制網(wǎng)絡(luò)應(yīng)用程序的組件。視圖由Java服務(wù)端網(wǎng)頁(yè)確立,包括一組可擴(kuò)展的自定義標(biāo)簽庫(kù)(Tab Lib)。模型的代表是Action Form Bean。業(yè)務(wù)邏輯由Java Bean或者是EJB制定。控制器由Action Servlet代表,這也是源代碼的核心。Action Servlet的控制參數(shù)在config.xml里面。源代碼的結(jié)構(gòu)如圖1:
持久層是阿帕奇軟件基金會(huì)的一個(gè)和對(duì)象相關(guān)的映射框架的開(kāi)放源代碼。它是一個(gè)使用對(duì)象關(guān)系數(shù)據(jù)庫(kù)符合java習(xí)慣的映射工具。關(guān)于這個(gè)架構(gòu)的詳細(xì)介紹可以參見(jiàn)參考文獻(xiàn)[6]。對(duì)象關(guān)系映射框架是用來(lái)映射由映射模式在SQL查詢時(shí)呈現(xiàn)相關(guān)模式結(jié)構(gòu)的對(duì)象。持久層不僅管理Java類(lèi)還有來(lái)自數(shù)據(jù)庫(kù)表格的映射,而且還提供數(shù)據(jù)查詢和數(shù)據(jù)的獲得。持久層JDBC減少了SQL查詢和JDBC處理數(shù)據(jù)的時(shí)間,因此Java的編程人員能夠以對(duì)象為主的方法容易地管理數(shù)據(jù)。持久層有五個(gè)主要的接口,包括訪問(wèn)、訪問(wèn)車(chē)間、事務(wù)處理、查詢和配置。開(kāi)發(fā)程序的人能夠接入持久的對(duì)象也能管理這些接口的事務(wù)。由持久層建立的程序能避免人為開(kāi)發(fā)數(shù)據(jù)持續(xù)化層次的問(wèn)題。它能使復(fù)雜的開(kāi)發(fā)簡(jiǎn)單化,也能加快開(kāi)發(fā)速度。
小的圖書(shū)館管理系統(tǒng)是一個(gè)有交易需要的的信息體制,包括管理體制、借書(shū)還書(shū)管理、讀者數(shù)據(jù)庫(kù)管理以及圖書(shū)數(shù)據(jù)庫(kù)管理。管理體制包括系統(tǒng)參數(shù)維修和設(shè)置讀者進(jìn)入圖書(shū)館的權(quán)利。借書(shū)和還書(shū)管理系統(tǒng)處理日常事務(wù),例如:圖書(shū)的借閱、歸還和查詢。讀者數(shù)據(jù)庫(kù)管理系統(tǒng)處理讀者信息更新,例如:圖書(shū)證注冊(cè)、掛失。圖書(shū)數(shù)據(jù)庫(kù)管理系統(tǒng)包含文獻(xiàn)和信息,例如:查詢、修改、增加和刪除或者復(fù)印報(bào)告。系統(tǒng)功能模式如圖3中所示。
標(biāo)記層和持久層被用來(lái)開(kāi)發(fā)圖書(shū)館管理系統(tǒng)框架。整個(gè)系統(tǒng)可以分成展示層、商業(yè)處理層、數(shù)據(jù)持久層和數(shù)據(jù)層,如圖4所示。展示層采用JSP技術(shù)和Struts Lag Lib來(lái)實(shí)現(xiàn)。
商業(yè)處理層即商業(yè)邏輯層,由Java Bean實(shí)現(xiàn)。商業(yè)處理層可以通過(guò)模型層與數(shù)據(jù)庫(kù)交換信息,由休眠模式完成。另外,關(guān)系數(shù)據(jù)庫(kù)是模型的底層。
(1)顯示層
顯示層由源代碼結(jié)構(gòu)實(shí)現(xiàn),它的核心是Action Servlet控制器元件。當(dāng)每個(gè)控制器元件被設(shè)計(jì)出來(lái),strutsconfig.xml就會(huì)被定義為分配商業(yè)處理,這個(gè)配置項(xiàng)會(huì)在網(wǎng)頁(yè)文件中聲明。Action Servlet控制器將會(huì)實(shí)現(xiàn)客戶端輸入、過(guò)程和輸出的示圖,基于源代碼-config.xml配置文件。當(dāng)用戶使用用戶注冊(cè)瀏覽-注冊(cè)服務(wù)端網(wǎng)頁(yè),網(wǎng)頁(yè)上的注冊(cè)信息將會(huì)被傳送給控制器。根據(jù)配置文件,控制器將會(huì)創(chuàng)建Java Bean文檔-注冊(cè)形式的程序,這是多元計(jì)算機(jī)的商業(yè)模式。注冊(cè)命令程序被用于處理商業(yè)模式。當(dāng)注冊(cè)成功后,系統(tǒng)會(huì)要求文檔Login.jsp進(jìn)入系統(tǒng),否則,用戶需要再注冊(cè)一遍。
(2)商業(yè)邏輯層
在圖書(shū)館管理系統(tǒng)中,商業(yè)邏輯層負(fù)責(zé)所有的商業(yè)邏輯。它是顯示層和數(shù)據(jù)持久層的中間層。商業(yè)邏輯層中的數(shù)據(jù)處理來(lái)自于顯示層和數(shù)據(jù)持久層。商業(yè)邏輯層負(fù)責(zé)數(shù)據(jù)對(duì)象打包,數(shù)據(jù)對(duì)象由數(shù)據(jù)持久層提供。它也為顯示層提供功能界面。商業(yè)處理層由業(yè)務(wù)組件實(shí)現(xiàn)。
(3)數(shù)據(jù)持久層
數(shù)據(jù)持久層由休眠模式實(shí)現(xiàn)。在識(shí)別的過(guò)程中,程序員會(huì)創(chuàng)建設(shè)定檔,定義持久等級(jí)、持久化對(duì)象圖示和實(shí)現(xiàn)持久操作。
配置文件休眠模式-cfg.xml在休眠模式中構(gòu)建信息數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序、用戶名和密碼。UserIn.hm.xml is是關(guān)系數(shù)據(jù)庫(kù)映像文件;實(shí)現(xiàn)在數(shù)據(jù)庫(kù)中從用戶信息對(duì)象文件到用戶桌面的映像。
數(shù)據(jù)庫(kù)操作,如查詢、修改、刪除和添加都被User Information Manager.java打包。一部分代碼如下:
這些方法將會(huì)在識(shí)別過(guò)程中首先創(chuàng)立會(huì)話對(duì)象,然后執(zhí)行多樣數(shù)據(jù)庫(kù)操作,在操作完畢后,將關(guān)閉會(huì)話對(duì)象。
本文描述了基于源代碼和休眠模式技術(shù)的圖書(shū)館管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。該系統(tǒng)充分利用了源代碼和休眠模式,有效地縮短了系統(tǒng)開(kāi)發(fā)周期,實(shí)現(xiàn)了分隔碼,加強(qiáng)了系統(tǒng)的可維護(hù)性和可復(fù)用性。該系統(tǒng)在組織中已經(jīng)成功運(yùn)行。系統(tǒng)簡(jiǎn)化了圖書(shū)館管理工作并具有很好的擴(kuò)展性。
[1]耿祥義,張躍平.Java 2實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[2]姜明華,丁益祥,毛闊龍.MVC模式功能分析及其應(yīng)用擴(kuò)展機(jī)制的研究[J].中國(guó)科技信息,2006(18):43.
[3]孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2005.
[4]Carlson Harold.Spring designer’s handbook[M].New York:M Dekker,1978.
[5]思志學(xué).J2EE Struts+Spring+Hibernate整合詳解與典型案例[M].北京:電子工業(yè)出版社,2008.
[6]James Elliot Hibernate.A Developer’s Notebook[M].南京:東南大學(xué)出版社,2005.
[7]張燕萍.高校圖書(shū)館信息資源整合平臺(tái)系統(tǒng)分析[J].中國(guó)信息導(dǎo)報(bào),2007,(8):44-48.
[8]蘇東出.圖書(shū)館數(shù)據(jù)的安全與防范[J].情報(bào)探索,2008,(7):71-72.