湖南城市學院圖書館 曹異卿
?
基于Struts+Spring+Hibernate框架的圖書借閱系統設計
湖南城市學院圖書館曹異卿
圖書借閱系統是圖書館信息系統的重要組成部分,本文設計了一個基于Struts+Spring+Hibernate框架的圖書借閱系統,系統基于輕量級的SSH框架設計,具有很高的靈活性和可擴展性。系統實現了Web方式的圖書借閱系統,與傳統C/S借閱系統相比,對客戶端環境沒有要求,并且實現了學生通過Internet來遠程檢索圖書功能。
圖書借閱系統;Struts;Spring;Hibernate
目前,國內的高校圖書館大都實現了日常業務的自動化集成管理,絕大多數圖書館都購買或建立了數據庫管理信息系統。一方面,隨著目前高等院校的擴招,圖書館的讀者成千上萬,他們性別不同,專業不同,閱讀興趣和愛好也各不相同。另一方面,目前高等院校圖書館的購書經費都比較緊張,面對目前出版商和書店堆積如山的圖書,如何了解各個專業學生的借閱興趣,充分利用有限的購書經費采購到令讀者滿意的圖書,提高服務的質量等,均日益成為圖書館管理層一個重要的問題。圖書館集成管理系統每天都會產生大量的統計數據和表單,它們對圖書館了解讀者的借閱興趣、圖書采購、信息咨詢等業務都有著很強的指導作用。如何充分利用這些日益增長的大量數據,從中找到有用的信息,迫切要求一種強有力的數據采集和處理工具介入到圖書館自動化系統中來,為圖書館工作提供新的技術和決策管理支持,而數據倉庫和聯機分析處理正是這樣一種新興的技術。另外,從教與學的角度來考慮,通過對學生大量借閱數據的分析,還可以了解學生課下對各個學科的學習情況,從而對學生的學習起到督促的作用[1]。
圖書借閱系統作為圖書館的主要信息系統,不僅要實現圖書檢索、借閱功能,還要完成圖書的庫存管理功能。圖書管理系統可以采用目前的各種流行軟件開發架構實現,如ASP.NET和JSP等,針對圖書館的需求,選擇了性能比較好,可擴展性高的Struts+Spring+Hibernate結合JSP技術進行實現。
數據庫采用Microsoft SQL Server 2005,包括圖書類型庫表、書目庫表、借書信息庫表、部門信息庫表、圖書管理員庫表、借閱人庫表、借閱期限庫表、歸還狀態庫表。
Struts/Spring/Hibernate集成框架是Struts、Spring和Hibernate三種技術的有機融合,是目前應用最廣泛的Java EE架構。在Struts/Spring/ Hibernate集成框架中,Struts的作用是提供MVC模型,將界面、業務邏輯和數據分離,并提供一個高可擴展的架構。Spring作為依賴注入的容器,將項目中的構建進行粘結。而Hibernate提供了一個抽象的數據服務視圖,將用戶對數據庫的訪問進行高度抽象。[2]
Struts是MVC模式的一種優良設計,Struts對Model,View和Controller都提供了對應的組件[3]。ActionServlet是Struts的核心控制器,負責攔截來自用戶的請求。Action通常由用戶提供,該控制器負責接收來自ActionServlet的請求,并根據該請求調用模型的業務邏輯方法處理請求,并將處理結果返回給JSP頁面顯示,如圖1所示。
Spring是一個開源框架,它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。[4]從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。

圖1 Struts的系統架構
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。[5]Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/ JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
在Struts+Spring+Hibernate框架中,利用Sturts來實現MVC模式,使用Spring來實現容器,使用Hibernate來訪問數據庫,給系統開發帶來了前所未有的幫助,集成后的系統架構如圖2所示。

圖2 系統架構設計

數據庫訪問公共代碼設計:
面向對象的程序設計能夠有效地減少代碼冗余,提高編程效率。在系統設計中,除了采用面向對象的程序設計外,還對公共代碼進行了提取,編寫公共代碼模塊,以提高系統的復用程度,基本數據庫訪問就采用了復用技術,BaseHbmDAO的程序如下。
public class BaseHbmDAO
{
public BaseHbmDAO()
{
autoClose = true;
isTransaction = false;
}
……
public void remove(Object obj)
throws DAOException
{
Transaction trans = null;
try
{
trans = ses.beginTransaction();
ses.delete(obj);
trans.commit();
}
catch(Exception e)
{
……
}
finally
{
……
}
}
BookAction的實現如下:
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
BookActionForm form = (BookActionForm) actionForm;
BookLogic logic = new BookLogic();
logic.setForm(form);
if(form.getOperation().equals("delete"))
{
logic.deleteBook();
form.setOperation("display");
}
if(form.getOperation().equals("save"))
{
logic.saveBook();
form.setOperation("display");
}
if(form.getOperation().equals("add"))
{
logic.addBook();
form.setOperation("display");
logic.closeDAO();
return actionMapping.findForward("book");
}
logic.getBooks();
logic.closeDAO();
return actionMapping.findForward("book");
}
}
基于Struts+Spring+Hibernate的圖書借閱系統提高了圖書借閱的效率,采用輕量級的系統架構,讓系統不僅在實現速度上有了提升,而且在可用性、可擴展性和靈活性上面有了提高。系統不僅能實現圖書借閱功能,而且實現了學生通過互聯網進行書籍檢索,節約了學生到圖書館檢索的時間,提高了工作效率。
[1]劉冰榮.基于微信的個性化圖書借閱平臺構建[J].圖書館學刊,2014,12:117-119.
[2]丁夷,金永賢.基于Struts+Spring+Hibernate框架的手機圖書館服務系統[J].大學圖書館學報,2011,01:77-82.
[3]薛峰,梁鋒,徐書勛,王彪任.基于Spring MVC框架的Web研究與應用[J].合肥工業大學學報(自然科學版),2012,03:337-340.
[4]萬東.基于Struts+Hibernate+Spring的輕量級J2EE框架[J].現代電子技術,2011,16:39-41.
[5]李洋,孫永維,許冰,王英雙.基于Ajax,Struts,Hibernate和Spring的J2EE架構[J].吉林大學學報(信息科學版),2011,06:576-584.
湖南城市學院科技計劃項目(項目名稱:開放式圖書館數字資源檢索網絡優化研究,項目編號:2014xj34)。
曹異卿(1979—),女,大學本科,助理工程師,現供職于湖南城市學院圖書館,研究方向:情報學,計算機應用。