《基于Java EE體系的高校教務(wù)管理系統(tǒng)的設(shè)計(jì)開發(fā)》由會員分享,可在線閱讀,更多相關(guān)《基于Java EE體系的高校教務(wù)管理系統(tǒng)的設(shè)計(jì)開發(fā)(3頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、基于Java EE體系的高校教務(wù)管理系統(tǒng)的設(shè)計(jì)開發(fā)
高校教務(wù)管理系統(tǒng)是一個(gè)復(fù)雜的信息管理系統(tǒng),它的用戶不僅涉及教師、學(xué)生還包含了整個(gè)高校中的所有部門、院系、管理員等,這些都是構(gòu)成高校教務(wù)系統(tǒng)的關(guān)鍵要素。而本文所設(shè)計(jì)的系統(tǒng)是基于Java EE體系結(jié)構(gòu)和分布式應(yīng)用模型,在這種體系架構(gòu)下,可以讓系統(tǒng)用戶不必考慮使用的時(shí)間和地點(diǎn),用戶可以通過任何一臺與高校校園網(wǎng)相連的計(jì)算機(jī)完成相應(yīng)的應(yīng)用功能,極大的方便了用戶使用的過程,同時(shí)也節(jié)約了高校的人力和物力。
在本系統(tǒng)的設(shè)計(jì)中,程序、數(shù)據(jù)庫和其他的一些中間件都集中在系統(tǒng)的服務(wù)器上,而用戶所使用的客戶端只需要安裝有瀏覽器和必要的上網(wǎng)裝置之外,不需要使用
2、其他任何的組件和插件,這就極大的方便了用戶的使用。另外,本系統(tǒng)整合了校園內(nèi)分散的數(shù)據(jù)資源,統(tǒng)一搭建了數(shù)據(jù)平臺,所有用戶使用和查詢的數(shù)據(jù)都來源于同一個(gè)數(shù)據(jù)源,這就保證了數(shù)據(jù)的及時(shí)性和完整性。同時(shí),由于系統(tǒng)是在Java EE體系架構(gòu)下設(shè)計(jì)的,當(dāng)有新的業(yè)務(wù)邏輯或者原有的業(yè)務(wù)邏輯發(fā)生變化時(shí),只需要修改服務(wù)器端的對應(yīng)的個(gè)別程序組件即可,對于控制器或其他的組件,特別對于用戶的使用沒有任何的影響,這就極大的提高了系統(tǒng)維護(hù)和擴(kuò)展功能。
本文主要對系統(tǒng)的關(guān)鍵部分進(jìn)行了詳細(xì)的設(shè)計(jì),并對持久化層的實(shí)現(xiàn)進(jìn)行了詳細(xì)的說明。
一、系統(tǒng)持久化層的設(shè)計(jì)與實(shí)現(xiàn)
1 持久化對象模型的設(shè)計(jì)
本系統(tǒng)運(yùn)用了Hi
3、bernate實(shí)現(xiàn)對象的持久化。Hibernate是為了避免使用傳統(tǒng)而繁雜的JDBC操作數(shù)據(jù)庫的方式,采用了對象/關(guān)系映射機(jī)制來支持?jǐn)?shù)據(jù)庫的開發(fā),從而實(shí)現(xiàn)了以面向?qū)ο蟮姆绞絹聿倏v數(shù)據(jù)庫,保證了系統(tǒng)面向?qū)ο蟮奶匦院烷_發(fā)方式,體現(xiàn)了面向?qū)ο蟮姆治?、設(shè)計(jì)和開發(fā)流程。在系統(tǒng)利用面向?qū)ο蟮姆椒ú倏v數(shù)據(jù)庫時(shí)需要從數(shù)據(jù)庫的二維表中抽象出其特性,并進(jìn)行封裝,定義出相應(yīng)的對象,把這些對象抽象成對應(yīng)的類,之后在服務(wù)器運(yùn)行時(shí),這些對象被持久化的保存形成了持久化對象PO。本節(jié)以學(xué)生選課系統(tǒng)為例來說明持久化對象的建立過程和方法。
選課系統(tǒng)的主要功能是為學(xué)生、選修課程和教師之間建立一個(gè)交互平臺,教師通過該系統(tǒng)可以開
4、設(shè)各種選修課程,學(xué)生可以通過該系統(tǒng)選擇自己感興趣的課程。當(dāng)選課過程結(jié)束后,系統(tǒng)會將選擇同一門課的學(xué)生編入同一個(gè)臨時(shí)班級從而方便排課系統(tǒng)對開設(shè)的選修課程進(jìn)行課表編排操作。
根據(jù)以上的分析,可以將整個(gè)選課系統(tǒng)的持久化類設(shè)計(jì)為以下幾種:Admin 系統(tǒng)管理員對象、Course 選修課程對象、Student 學(xué)生對象、Teacher 教師對象、LsBj臨時(shí)班級對象、Bj班級對象、Xk選課對象。
在輕量級的Java EE框架下SSH的設(shè)計(jì)中,系統(tǒng)所定義的PO對象都是以獨(dú)立對象的形式進(jìn)行定義的,也就是任何模塊都可以使用這些定義好的PO對象,但其實(shí)這些PO對象隱含這復(fù)雜的相互關(guān)系,分析這些對象的
5、關(guān)系也是建立Hibernate中持久化對象操作的前提,下面就對選課系統(tǒng)的持久化對象進(jìn)行分析。
課程對象Course、學(xué)生對象Student、教師對象Teacher、選課對象Xk、班級對象Bj和臨時(shí)班級對象LsBj,這些PO對象看似獨(dú)立,卻存在著復(fù)雜的聯(lián)系,他們之間的類關(guān)系如圖1所示,當(dāng)選修課程開設(shè)時(shí),一位教師可以開設(shè)多門選修課程,而一門課程也可以由多位教師來授課,因此Teacher與Course對象存在著多對多的關(guān)系。
另外,課程開設(shè)后,學(xué)生可以參與選課操作,一個(gè)學(xué)生可以選修一門或多門課程,而一門課程也可以由多個(gè)學(xué)生選修,因此Student與Course之間也是多對多的關(guān)系。高校的
6、學(xué)生入學(xué)后會被編入班級中,一個(gè)班級可以包含多個(gè)學(xué)生對象,而一個(gè)學(xué)生只能從屬于唯一的一個(gè)班級對象,因此學(xué)生與班級對象之間是多對一的關(guān)系。
通過上述的業(yè)務(wù)分析,對選課系統(tǒng)的PO對象和他們之間的關(guān)聯(lián)進(jìn)行分析,建立選課系統(tǒng)的持久化對象的關(guān)系類圖,如圖1所示。
2 持久化對象的創(chuàng)建
從以上的類關(guān)系圖中可以看出,選課系統(tǒng)的持久化對象的關(guān)聯(lián)關(guān)系是通過PO對象的內(nèi)部屬性的方式表現(xiàn)出來的,這些屬性與其他屬性類似,賦值和取值操作都是通過set和get方法進(jìn)行定義。同時(shí),這些PO對象將來會于數(shù)據(jù)庫中表的字段相對應(yīng),Hibernate框架會將數(shù)據(jù)庫的表結(jié)構(gòu)進(jìn)行反轉(zhuǎn)映射,與PO對象映射起來,這樣上層應(yīng)
7、用系統(tǒng)就可以用面向?qū)ο蟮某绦蚍椒▉碓L問數(shù)據(jù)庫的關(guān)系表。
Hibernate對于持久化對象沒有特殊的要求,只需要持久化對象提供下無參數(shù)的構(gòu)造函數(shù)即可,當(dāng)持久化對象之間的關(guān)系有多方出現(xiàn)是,需要在PO對象中重新定義一個(gè)集合屬性來表示多方的狀態(tài),下面就以"Teacher教師持久化對象";部分實(shí)現(xiàn)代碼為例:
public class Teacher implements java.io.Serializable {
private String teacherBh;//教師編號
private String teacherName;//教師姓名
private String
8、 szYx; //教師所在院系
private Date teacherBirthday; //教師出生年月
private Date teacherWorkTime; //教師參加工作時(shí)間
private Set courses=new HashSet();//教師開設(shè)的選修課程集合
public String getTeacherBh() {
return teacherBh;
}
public void setTeacherBh(String teacherBh) {
this.teacherBh = teacherBh;
}
9、二、 持久化對象模型與關(guān)系模型的轉(zhuǎn)換
通過上面的分析與設(shè)計(jì),可以得到選課系統(tǒng)的關(guān)鍵持久化對象類,按照Hibernate框架的對象到關(guān)系的映射規(guī)定,可以將這些定義的持久化對象反轉(zhuǎn)映射成對應(yīng)的關(guān)系表,其對應(yīng)關(guān)系為:持久化對象類數(shù)據(jù)庫關(guān)系表,類屬性關(guān)系表字段,持久化對象關(guān)系表記錄。下面以"課程表";的轉(zhuǎn)換表為例(見表1)。
三、對象-關(guān)系映射文件的建立
在Hibernate的框架中,以對象/關(guān)系映射技術(shù)來實(shí)現(xiàn)從持久化對象到關(guān)系對象的轉(zhuǎn)換,該技術(shù)的核心思想就是將獨(dú)立的對象模型和關(guān)系模型之間用對象-關(guān)系映射文件來一一對應(yīng)起來。在本文前面的敘述中,我們已經(jīng)完成了數(shù)據(jù)庫中關(guān)系模型和應(yīng)用系統(tǒng)
10、中持久化對象的建立,這樣使應(yīng)用系統(tǒng)只需要訪問java對象來完成對數(shù)據(jù)庫表的訪問,而不需要直接訪問數(shù)據(jù)庫,但他們直接的映射需要借助于配置文件*.hbm.xml來實(shí)現(xiàn)。
在Hibernate框架中,*.hbm.xml配置文件中定義了Java對象和數(shù)據(jù)庫關(guān)系表的對應(yīng)關(guān)系,主要包括:Java類數(shù)據(jù)庫表,Java對象表中的記錄,Java類的屬性關(guān)系表字。之后框架將持久化對象傳送給數(shù)據(jù)訪問對象,由數(shù)據(jù)訪問對象來實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)邏輯操作,從而良好的的實(shí)現(xiàn)了業(yè)務(wù)邏輯對象和數(shù)據(jù)對象的分離。
在Hibernate中定義PO時(shí),每一個(gè)PO對象都會定義一個(gè)相應(yīng)同名的*.hbm.xml文件,用來描述PO對象和數(shù)
11、據(jù)庫表或者其他的對象之間的關(guān)聯(lián)關(guān)系,這樣對于PO對象來說都是獨(dú)立定義的,但在*.hbm.xml文件的定義中,這些獨(dú)立的組件就會產(chǎn)生復(fù)雜的關(guān)聯(lián)。下面我們就根據(jù)前面章節(jié)對選課系統(tǒng)的分析和PO對象的建立,為每個(gè)對象創(chuàng)建其相應(yīng)的*.hbm.xml文件,分別是:Teacher.hbm.xml、Student.hbm.xml、Course.hbm.xml、Xk.hbm.xml、Bj.hbm.xml、LsBj.hbm.xml、Admin.hbm.xml。
由于各個(gè)映射文件的結(jié)構(gòu)相似,因此我們下面只對課程Course.hbm.xml映射文件的部分實(shí)現(xiàn)代碼舉例:
Mapping file autogenerated by MyEclipse Persistence Tools
結(jié)語
本文主要根據(jù)教務(wù)管理系統(tǒng)的特點(diǎn),利用輕量級Java EE對系統(tǒng)進(jìn)行詳細(xì)的設(shè)計(jì)和實(shí)現(xiàn),并且詳細(xì)介紹了系統(tǒng)關(guān)鍵部分持久化層的實(shí)現(xiàn),描述了系統(tǒng)持久化對象的建模過程和PO的建立的過程,并給出了相應(yīng)的代碼。最后,利用對象-關(guān)系映射原則將PO對象轉(zhuǎn)換成了數(shù)據(jù)庫的關(guān)系表,給出了數(shù)據(jù)庫表的邏輯結(jié)構(gòu)。
參考文獻(xiàn)
【1】李磊.基于J2EE構(gòu)建的遠(yuǎn)程教學(xué)平臺的設(shè)計(jì)與實(shí)現(xiàn).大連海事大學(xué),2004.