版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計Ⅱ設(shè)計報告題目:人力資源管理系統(tǒng)的SSH實踐課程設(shè)計學(xué)號:姓名:學(xué)院:專業(yè)班級:指導(dǎo)教師:設(shè)計時間:指導(dǎo)老師評語:評定成績:簽名:日期:目錄一、需求分析及總體設(shè)計 2二、系統(tǒng)結(jié)構(gòu)設(shè)計 3三、數(shù)據(jù)庫設(shè)計及實現(xiàn) 5四、Hibernate持久層 11⑴設(shè)計持久化對象(PO) 11⑵創(chuàng)建持久化對象 12⑶映射持久化對象 13五、實現(xiàn)DAO層 16⑴DAO組件的定義 16⑵實現(xiàn)DAO組件 17⑶部署DAO層 19六、實現(xiàn)Service層 19⑴Service組件的設(shè)計 19⑵Service組件的實現(xiàn) 20七公共模塊設(shè)計 22部門管理 22員工管理 22招聘管理 23培訓(xùn)管理 23獎懲管理 23薪資管理 24系統(tǒng)管理 24用戶修改 24八系統(tǒng)開發(fā)總結(jié)總結(jié) 24參考文獻 25一、需求分析及總體設(shè)計通過人力資源管理系統(tǒng)可使管理者快速高效地完成企業(yè)日常事務(wù)中的人事工作,降低人力資源管理的成本,使管理者能集中精力實現(xiàn)企業(yè)戰(zhàn)略目標(biāo)。人力資源管理系統(tǒng)的具體目標(biāo)如下:對企業(yè)人力資源管理的基本信息進行管理。管理企業(yè)的員工信息(即人事管理功能)。實現(xiàn)為個人提供網(wǎng)絡(luò)工作平臺的功能。實現(xiàn)企業(yè)的應(yīng)聘信息的管理功能。實現(xiàn)企業(yè)員工培訓(xùn)的一系列相關(guān)信息的管理。員工薪酬信息管理。系統(tǒng)用戶信息的管理。系統(tǒng)運行穩(wěn)定、安全可靠。二、系統(tǒng)結(jié)構(gòu)設(shè)計本系統(tǒng)采用流行的Struts+Spring+Hibernate組合框架:Struts專注于表現(xiàn)層結(jié)構(gòu),使用典型的MVC結(jié)構(gòu);Hibernate處于該架構(gòu)的持久化層,用于管理系統(tǒng)與數(shù)據(jù)庫打交道的所有過程,實現(xiàn)最基本的數(shù)據(jù)庫操作,以及完成數(shù)據(jù)持久化任務(wù);而Spring處于中間層,利用其優(yōu)秀的反轉(zhuǎn)控制(IoC)和事物管理特性,實現(xiàn)表現(xiàn)層、業(yè)務(wù)層和持久化層三者之間的松散耦合,并負責(zé)完成和實現(xiàn)系統(tǒng)所有事務(wù)。系統(tǒng)架構(gòu)如下圖所示:IOCIOC表現(xiàn)層Struts-MVC實現(xiàn)各個功能的界面,負責(zé)與用戶交互(Action、JSP、ActionForm)業(yè)務(wù)層Spring事物管理、HibernateSession管理、Service類DAO類持久化層Hibernate使用HQL操作數(shù)據(jù)庫,實現(xiàn)對象持久化(hbm文件)上圖各層的功能如下:表現(xiàn)層(Struts):提供與用戶交互的程序界面,使用ActionForm獲取用戶輸入數(shù)據(jù),在Action中調(diào)用相應(yīng)的業(yè)務(wù)處理方法完成業(yè)務(wù)處理,最后再根據(jù)業(yè)務(wù)方法的返回結(jié)果,使用不同的頁面顯示處理結(jié)果。該層不關(guān)心業(yè)務(wù)處理的過程,不與數(shù)據(jù)庫直接打交道,只是為業(yè)務(wù)方法提供必要的數(shù)據(jù)輸入。此外,為了加強系統(tǒng)的可靠性,該層應(yīng)該負責(zé)表現(xiàn)數(shù)據(jù)庫的校驗,例如輸入的用戶名是否合法、密碼是否超過長度等等。從而為業(yè)務(wù)層提供比較合理的數(shù)據(jù)。業(yè)務(wù)層(Spring):完成復(fù)雜事物邏輯處理和業(yè)務(wù)校檢,提供完善的事務(wù)管理功能。該層隔離了表現(xiàn)層和持久化層,降低了系統(tǒng)的耦合性,使二者只需關(guān)注本層任務(wù)。此外,本系統(tǒng)中的Spring還負責(zé)管理數(shù)據(jù)源(DataSource),為Hibernate數(shù)據(jù)庫操作提供連接。使用反轉(zhuǎn)控制特性,將DAO和業(yè)務(wù)方法注冊,使得系統(tǒng)運行時Action只需調(diào)用業(yè)務(wù)邏輯接口(Service接口),而業(yè)務(wù)方法只需要調(diào)用各持久化對象的DAO接口。持久化層(Hibernate):實現(xiàn)O/R映射,利用HQL完成基本的數(shù)據(jù)庫操作,包括添加、刪除和修改。管理員管理員部門管理培訓(xùn)管理招聘管理系統(tǒng)管理員工管理薪資管理獎懲管理管理員登錄人力資源系統(tǒng)首頁人力資源管理系統(tǒng)人力資源管理系統(tǒng)部門管理招聘管理員工管理薪資管理系統(tǒng)管理懲獎管理培訓(xùn)管理三、數(shù)據(jù)庫設(shè)計及實現(xiàn)在完成需求分析、功能設(shè)計和架構(gòu)設(shè)計后,開發(fā)的第一個步驟就是完成數(shù)據(jù)庫的設(shè)計,以及建立數(shù)據(jù)庫服務(wù)器。根據(jù)前面的功能分析,可以抽象出本系統(tǒng)的數(shù)據(jù)庫實體對象:用戶、產(chǎn)品、訂單、訂單條目、產(chǎn)品評論、產(chǎn)品類別,其具體內(nèi)容及關(guān)系如下圖所示:數(shù)據(jù)庫設(shè)計這個人力資源系統(tǒng)的數(shù)據(jù)庫,用了七個數(shù)據(jù)庫表,db_personManager,下面的表有,培訓(xùn)信息表,薪資信息表,管理員信息表,招聘信息表,員工信息表,部門信息表,獎懲信息表,在數(shù)據(jù)庫中是對應(yīng):tb_tarin,tb_play.tb_manager,tb_inviteJob,tb_employe,tb_department,tb_cj.用的是Sqlserver2005的數(shù)據(jù)庫。建立數(shù)據(jù)庫tb_tarinUSE[db_personManager]CREATETABLE[dbo].[tb_cj]( [id][int]IDENTITY(1,1)NOTNULL, [cj_title][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL, [cj_type][char](1)COLLATEChinese_PRC_CI_ASNOTNULL, [cj_content][text]COLLATEChinese_PRC_CI_ASNOTNULL, [cj_money][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [cj_time][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,CONSTRAINT[PK_tb_cj]PRIMARYKEYCLUSTERED)建立表tb_playUSE[db_personManager]CREATETABLE[dbo].[tb_pay]( [id][int]IDENTITY(1,1)NOTNULL, [pay_emNumber][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL, [pay_emName][char](10)COLLATEChinese_PRC_CI_ASNOTNULL, [pay_month][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL, [pay_baseMoney][int]NOTNULL, [pay_overtime][int]NOTNULL, [pay_age][int]NOTNULL, [pay_check][money]NOTNULL, [pay_absent][money]NOTNULL, [pay_safety][money]NOTNULL,CONSTRAINT[PK_tb_pay]PRIMARYKEYCLUSTERED( [id]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGOUSE[db_personManager]GOALTERTABLE[dbo].[tb_pay]WITHCHECKADDCONSTRAINT[FK_tb_pay_tb_employee]FOREIGNKEY([pay_emNumber])REFERENCES[dbo].[tb_employee]([em_serialNumber])建立表tb_managerUSE[db_personManager]CREATETABLE[dbo].[tb_manager]( [id][int]IDENTITY(1,1)NOTNULL, [account][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL, [password][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL, [managerLevel][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,CONSTRAINT[PK_tb_manager]PRIMARYKEYCLUSTERED( [id]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFF建立表tb_inviteJob,USE[db_personManager]CREATETABLE[dbo].[tb_inviteJob]( [id][int]IDENTITY(1,1)NOTNULL, [name][char](10)COLLATEChinese_PRC_CI_ASNULL, [sex][char](10)COLLATEChinese_PRC_CI_ASNULL, [age][int]NULL, [born][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [job][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [specialty][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [experience][char](10)COLLATEChinese_PRC_CI_ASNULL, [teachSchool][varchar](30)COLLATEChinese_PRC_CI_ASNULL, [afterSchool][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [tel][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [address][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [createtime][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [content][ntext]COLLATEChinese_PRC_CI_ASNULL, [isstock][bit]NULL,CONSTRAINT[PK_tb_inviteJob]PRIMARYKEYCLUSTERED( [id]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GOSETANSI_PADDINGOFF建立表tb_employe,USE[db_personManager]CREATETABLE[dbo].[tb_employee]( [id][int]IDENTITY(1,1)NOTNULL, [em_serialNumber][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL, [em_name][char](10)COLLATEChinese_PRC_CI_ASNOTNULL, [em_sex][char](2)COLLATEChinese_PRC_CI_ASNOTNULL, [em_age][int]NOTNULL, [em_IDCard][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL, [em_born][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL, [em_nation][char](10)COLLATEChinese_PRC_CI_ASNOTNULL, [em_marriage][char](10)COLLATEChinese_PRC_CI_ASNOTNULL, [em_visage][char](10)COLLATEChinese_PRC_CI_ASNULL, [em_ancestralHome][char](30)COLLATEChinese_PRC_CI_ASNULL, [em_tel][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [em_address][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [em_afterSchool][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [em_speciality][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [em_culture][char](10)COLLATEChinese_PRC_CI_ASNULL, [em_startime][char](30)COLLATEChinese_PRC_CI_ASNULL, [em_departmentId][int]NOTNULL, [em_typeWork][char](10)COLLATEChinese_PRC_CI_ASNULL, [em_creatime][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [em_createName][char](30)COLLATEChinese_PRC_CI_ASNULL, [em_bz][varchar](50)COLLATEChinese_PRC_CI_ASNULL,CONSTRAINT[PK_tb_employee]PRIMARYKEYCLUSTERED( [em_serialNumber]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGOUSE[db_personManager]GOALTERTABLE[dbo].[tb_employee]WITHNOCHECKADDCONSTRAINT[FK_tb_employee_tb_department]FOREIGNKEY([em_departmentId])REFERENCES[dbo].[tb_department]([id])GOALTERTABLE[dbo].[tb_employee]CHECKCONSTRAINT[FK_tb_employee_tb_department]建立表tb_department,USE[db_personManager]SETANSI_PADDINGONGOCREATETABLE[dbo].[tb_department]( [id][int]IDENTITY(1,1)NOTNULL, [dt_name][char](10)COLLATEChinese_PRC_CI_ASNULL, [dt_createTime][varchar](20)COLLATEChinese_PRC_CI_ASNULL, [dt_bz][varchar](50)COLLATEChinese_PRC_CI_ASNULL,CONSTRAINT[PK_tb_department]PRIMARYKEYCLUSTERED( [id]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFF建立表tb_cj.USE[db_personManager]SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[tb_cj]( [id][int]IDENTITY(1,1)NOTNULL, [cj_title][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL, [cj_type][char](1)COLLATEChinese_PRC_CI_ASNOTNULL, [cj_content][text]COLLATEChinese_PRC_CI_ASNOTNULL, [cj_money][varchar](50)COLLATEChinese_PRC_CI_ASNULL, [cj_time][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,CONSTRAINT[PK_tb_cj]PRIMARYKEYCLUSTERED( [id]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GOSETANSI_PADDINGOFF執(zhí)行完成上述所有語句后,sqlserver2005中建立的db_personManager所有表,如下圖所示:四、Hibernate持久層持久層由Hibernate管理和實現(xiàn),主要完成將對象持久化到數(shù)據(jù)庫的任務(wù)。以下是系統(tǒng)中的持久層的實現(xiàn)。⑴設(shè)計持久化對象(PO)持久化對象(PO,PersistantObject)是持久層的關(guān)鍵元素,它是系統(tǒng)操作的數(shù)據(jù)庫表的Java體現(xiàn)。Hibernate通過HQL直接操縱持久化對象完成相應(yīng)的數(shù)據(jù)庫操作。一般情況下,持久化對象是簡單的JavaBean,即POJO(PlainOldJavaObject)編程模型。其中包含與其相對應(yīng)的數(shù)據(jù)庫表中所有字段的getter和setter。根據(jù)本系統(tǒng)的數(shù)據(jù)庫設(shè)計,系統(tǒng)中將會包含六個持久化對象,分別對應(yīng)數(shù)據(jù)庫中的六張表。持久化對象中必須包含字段的getter和setter,但是并不意味著只能包含這些方法。其中還可以加入數(shù)據(jù)的校驗、格式化、初始化、組合HQL語句等等操作,使其變得更加有意義,也更加利于在系統(tǒng)中的使用。⑵創(chuàng)建持久化對象。以db_department表為例,創(chuàng)建與其對應(yīng)的持久化對象類,命名為DepartmentForm.java。db_department持久化類的源代碼如下:這個當(dāng)中是沒有直接用,而是在動作中體現(xiàn)(form)DepartmentForm.javapackagecom.wy.form;importorg.apache.struts.action.ActionForm;publicclassDepartmentFormextendsActionForm{ privateStringid=""; privateStringdt_name=""; privateStringdt_createTime=""; privateStringdt_bz="無"; publicStringgetDt_bz(){ returndt_bz; } publicvoidsetDt_bz(Stringdt_bz){ this.dt_bz=dt_bz; } publicStringgetDt_createTime(){ returndt_createTime; } publicvoidsetDt_createTime(Stringdt_createTime){ this.dt_createTime=dt_createTime; } publicStringgetDt_name(){ returndt_name; } publicvoidsetDt_name(Stringdt_name){ this.dt_name=dt_name; } publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } }⑶映射持久化對象在創(chuàng)建了持久化類以后,需要編寫與其相對應(yīng)的映射文件(*.hmb.xml),有了這些映射文件,Hibernate在進行數(shù)據(jù)庫操作時才能準(zhǔn)確定位。下面是持久化類department對應(yīng)的映射文件DepartmentForm.hbm.xml:<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEhibernate-mapping(ViewSourceforfulldoctype...)>-<!-- MappingfileautogeneratedbyMyEclipse-HibernateTools
-->-<hibernate-mappingdefault-cascade="none"default-access="property"default-lazy="true"auto-import="true">-<classname="com.wy.form.TrainForm"table="tb_train"mutable="true"polymorphism="implicit"dynamic-update="false"dynamic-insert="false"select-before-update="false"optimistic-lock="version">-<idname="id"type="java.lang.String">
<columnname="id"/>
<generatorclass="native"/>
</id>-<propertyname="tn_man"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_man"length="20"not-null="true"/>
</property>-<propertyname="tn_title"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_title"length="30"not-null="true"/>
</property>-<propertyname="tn_content"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_content"length="10"not-null="true"/>
</property>-<propertyname="tn_time"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_time"length="10"not-null="true"/>
</property>-<propertyname="tn_address"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_address"length="10"not-null="true"/>
</property>-<propertyname="tn_join"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_join"length="10"not-null="true"/>
</property>-<propertyname="tn_bz"type="java.lang.String"unique="false"optimistic-lock="true"lazy="false"generated="never">
<columnname="tn_bz"length="10"not-null="true"/>
</property>
</class>
</hibernate-mapping>其他持久化類的對應(yīng)映射文件,限于篇幅,在此不再列出。只是建立了持久化類及其配置文件,還要讓Hibernate可以找到它,于是把這些映射文件添加到Hibernate的配置文件中(一般是hibernate.cfg.xml)。由于本系統(tǒng)由Spring來管理數(shù)據(jù)源和SessionFactory,所以要把映射文件添加到Spring的配置文件applicationContext.xml文件中。代碼如下:-<!--數(shù)據(jù)庫連接的取得
-->-<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"lazy-init="default"autowire="default"dependency-check="default">-<propertyname="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>-<propertyname="url">
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_personManager</value>
</property>-<propertyname="username">
<value>sa</value>
</property>
</bean>-<!--Spring支持Hibernate框架的配置,得到SessionFactory
-->-<beanid="localSessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"lazy-init="default"autowire="default"dependency-check="default">-<propertyname="dataSource">
<refbean="dataSource"/>
</property>-<propertyname="hibernateProperties">-<props>
<propkey="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
</props>
</property>-<propertyname="mappingResources">-<list>
<value>com/wy/form/ManagerForm.hbm.xml</value>
<value>com/wy/form/DepartmentForm.hbm.xml</value>
<value>com/wy/form/InviteJopForm.hbm.xml</value>
<value>com/wy/form/EmployeeForm.hbm.xml</value>
<value>com/wy/form/PayForm.hbm.xml</value>
<value>com/wy/form/TrainForm.hbm.xml</value>
<value>com/wy/form/CjForm.hbm.xml</value>
</list>
</property>
</bean>applicationContext.xml就像是數(shù)據(jù)庫和程序之間的一個橋梁,負責(zé)將二者聯(lián)系起來,并且指定了聯(lián)系二者的某些規(guī)則:連接數(shù)據(jù)庫的用戶名和密碼、數(shù)據(jù)庫方言、數(shù)據(jù)源等等。五、實現(xiàn)DAO層在前面分別建立了數(shù)據(jù)庫及持久化對象,并且通過Spring架起來操作數(shù)據(jù)庫的橋梁,這一切都為實際的數(shù)據(jù)庫操作做好了準(zhǔn)備。下面來詳細介紹進行數(shù)據(jù)庫操作的DAO層,分別從定義和實現(xiàn)兩方面入手。⑴DAO組件的定義DAO是指數(shù)據(jù)訪問對象(DataAccessObject),主要任務(wù)是直接和數(shù)據(jù)庫打交道,完成最基本的查詢、創(chuàng)建、更新和刪除等操作。在Hibernate持久化層,DAO使用HQL操作持久化對象,完成這樣一系列的基本操作。而該層暴露給業(yè)務(wù)層的只是一個個方法,使得數(shù)據(jù)庫操作對業(yè)務(wù)層透明,也就是說業(yè)務(wù)層只需專心處理業(yè)務(wù)邏輯,而對于邏輯中發(fā)生的數(shù)據(jù)庫操作,都有DAO完成和處理,業(yè)務(wù)層不用關(guān)心其細節(jié)。由于DAO中實現(xiàn)的操作,通常來講是針對一個持久化對象的基本操作。因此,每一個持久化對象都有一個與之對應(yīng)的DAO類。在本系統(tǒng)中,每一個DAO都包含一個接口及其實現(xiàn)類,于是該層暴露給業(yè)務(wù)層的只是DAO接口,實現(xiàn)了良好的設(shè)計模式。根據(jù)以上分析,系統(tǒng)中包含六個獨立的DAO組件,每個組件包含兩個文件(接口及其實現(xiàn)類)。這些組件之間相互獨立,不產(chǎn)生任何關(guān)系。⑵實現(xiàn)DAO組件由于DAO組件中實現(xiàn)的數(shù)據(jù)庫相當(dāng)簡單,因此編寫起來也十分簡單。下面是針對整體的對象的DAO組件接口ObjectDaojavapackagecom.wy.dao;importjava.util.List;importorg.springframework.dao.DataAccessException;importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;publicclassObjectDaoextendsHibernateDaoSupport{ //condition為條件,查詢一組數(shù)據(jù),該方法的返回類型為Object publicObjectgetObjectForm(Stringcondition){ Listlist=null; Objectobject=null; try{ list=getHibernateTemplate().find(condition); if(list.size()==1){ object=(Object)list.get(0); } }catch(DataAccessExceptionex){ ex.printStackTrace(); } returnobject; } //condition為條件,查詢多組數(shù)據(jù),該方法的返回類型為List publicListgetObjectList(Stringcondition){ Listlist=null; try{ list=getHibernateTemplate().find(condition); }catch(DataAccessExceptionex){ ex.printStackTrace(); } returnlist; }//修改一組數(shù)據(jù),該方法的返回類型為boolean publicbooleanupdateObjectForm(Objectobject){ booleanflag=false; try{ getHibernateTemplate().update(object); flag=true; }catch(DataAccessExceptionex){ ex.printStackTrace(); } returnflag; } //添加一組數(shù)據(jù),該方法的返回類型為boolean publicvoidinsertObjectForm(Objectobject){ try{ getHibernateTemplate().save(object); }catch(DataAccessExceptionex){ ex.printStackTrace(); } } //刪除一組數(shù)據(jù),該方法的返回類型為boolean publicbooleandeleteObjectForm(Objectobject){ try{ getHibernateTemplate().delete(object); returntrue; }catch(DataAccessExceptionex){ ex.printStackTrace(); returnfalse; } }}⑶部署DAO層在實現(xiàn)了DAO層以后,要將其暴露給業(yè)務(wù)層,使得業(yè)務(wù)層可以調(diào)用它們,于是就需要將其在Spring的配置文件applicationContext.xml中注冊,也就用到了Spring的IOC特性。配置文件中相關(guān)內(nèi)容為:-<beanid="objectDao"class="com.wy.dao.ObjectDao"lazy-init="default"autowire="default"dependency-check="default">-<propertyname="sessionFactory">
<refbean="localSessionFactory"/>
</property>
</bean>六、實現(xiàn)Service層前面建立了數(shù)據(jù)庫、持久層,以及實現(xiàn)了數(shù)據(jù)庫操作的DAO層。但是所有的應(yīng)用系統(tǒng)都有業(yè)務(wù)緊密聯(lián)系在一起的,例如查詢CD、訂貨等等,而不是簡單的數(shù)據(jù)庫操作。下面來詳細介紹CDStore中各種業(yè)務(wù)操作的實現(xiàn)。⑴Service組件的設(shè)計Service層也就是架構(gòu)圖中的業(yè)務(wù)層,該組件負責(zé)調(diào)用DAO層的數(shù)據(jù)操作方法完成業(yè)務(wù)邏輯的處理,并且該層講將業(yè)務(wù)方法提供給表現(xiàn)層。于是在表現(xiàn)層看到的是一個個具有業(yè)務(wù)意義的方法,如login、register,得到的也是這些業(yè)務(wù)方法返回的結(jié)果。本系統(tǒng)中的Service組件包含了三個文件:Service接口、ServiceSupport和Service接口實現(xiàn)類。其中Service接口直接暴露給表現(xiàn)層中的Action,ServiceSupport幫助Service實現(xiàn)類組裝對DAO組件的引用,Service實現(xiàn)類毫無疑問是用來管理和實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯的。⑵Service組件的實現(xiàn)在這里是Action動作,用DepartForm做示范,來表示提供的相應(yīng)的服務(wù)packagecom.wy.action;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.actions.DispatchAction;importcom.wy.dao.ObjectDao;importcom.wy.form.DepartmentForm;importcom.wy.form.ManagerForm;publicclassDepartmentActionextendsDispatchAction{ privateObjectDaoobjectDao; publicObjectDaogetObjectDao(){ returnobjectDao; } publicvoidsetObjectDao(ObjectDaoobjectDao){ this.objectDao=objectDao; } //部門察看操作 publicActionForwardqueryDepartment(ActionMappingmapping, ActionFormform,HttpServletRequestrequest, HttpServletResponseresponse){ Listlist=objectDao.getObjectList("fromDepartmentFormorderbyiddesc"); request.setAttribute("list",list); request.setAttribute("employeeList",objectDao.getObjectList("fromEmployeeForm")); returnmapping.findForward("queryDepartment"); } //部門信息保存 publicActionForwardinsertDepartment(ActionMappingmapping, ActionFormform,HttpServletRequestrequest, HttpServletResponseresponse){ DepartmentFormdepartmentForm=(DepartmentForm)form; DepartmentFormdepartmentform=(DepartmentForm)objectDao .getObjectForm("fromDepartmentFormwhere
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版進戶門市場調(diào)研與數(shù)據(jù)分析合同
- 2025版鋼材電商交易平臺加盟合作協(xié)議3篇
- 2025版礦產(chǎn)承包項目地質(zhì)勘查與承包作業(yè)合同3篇
- 2024年高速鐵路建筑工程保險費用合同
- 2024年高性能計算設(shè)備購銷合同
- 2025年度美容院線上線下融合發(fā)展合作協(xié)議3篇
- 2024年生育規(guī)劃與養(yǎng)育協(xié)議
- 2024年城市更新項目用地征用及拆遷補償協(xié)議書3篇
- 二零二五年廣告宣傳物料制作合同變更條款提醒3篇
- 課題申報書:大語言模型教育應(yīng)用研究
- 理性思維作文素材800字(通用范文5篇)
- (完整)標(biāo)前協(xié)議
- 房產(chǎn)公司15周年年會主持詞5篇
- T-SZWA 001-2017 高分子益膠泥
- GB/T 10002.3-2011給水用硬聚氯乙烯(PVC-U)閥門
- 房地產(chǎn)估計第八章成本法練習(xí)題參考
- 《社會主義核心價值觀》優(yōu)秀課件
- DB11-T1835-2021 給水排水管道工程施工技術(shù)規(guī)程高清最新版
- 《妊娠期糖尿病患者個案護理體會(論文)3500字》
- 幼兒園繪本故事:《十二生肖》 課件
- 甘肅省慶陽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
評論
0/150
提交評論