




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)n設(shè)計(jì)報(bào)告題目:人力資源管理系統(tǒng)的SSH實(shí)踐課程設(shè)計(jì)學(xué)號: 姓名: 學(xué)院: 專業(yè)班級:指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 2010年6月 目錄TOC\o"1-5"\h\z\o"CurrentDocument"一、需求分析及總體設(shè)計(jì) 2\o"CurrentDocument"二、系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 3\o"CurrentDocument"三、數(shù)據(jù)庫設(shè)計(jì)及實(shí)現(xiàn) 5\o"CurrentDocument"四、HIBERNATE持久層 11\o"CurrentDocument"⑴設(shè)計(jì)持久化對象(PO) 11\o"CurrentDocument"⑵創(chuàng)建持久化對象 12\o"CurrentDocument"⑶映射持久化對象 13\o"CurrentDocument"五、實(shí)現(xiàn)DAO層 16\o"CurrentDocument"⑴DAO組件的定義 16\o"CurrentDocument"⑵實(shí)現(xiàn)DAO組件 17\o"CurrentDocument"⑶部署DAO層 19\o"CurrentDocument"六、實(shí)現(xiàn)SERVICE層 19\o"CurrentDocument"⑴Service組件的設(shè)計(jì) 19\o"CurrentDocument"⑵Service組件的實(shí)現(xiàn) 20\o"CurrentDocument"七公共模塊設(shè)計(jì) 22\o"CurrentDocument"部門管理 22\o"CurrentDocument"員工管理 22\o"CurrentDocument"招聘管理 23\o"CurrentDocument"培訓(xùn)管理 23\o"CurrentDocument"獎懲管理 23\o"CurrentDocument"薪資管理 24\o"CurrentDocument"系統(tǒng)管理 24\o"CurrentDocument"用戶修改 24\o"CurrentDocument"八系統(tǒng)開發(fā)總結(jié)總結(jié) 24參考文獻(xiàn) 25一、需求分析及總體設(shè)計(jì)通過人力資源管理系統(tǒng)可使管理者快速高效地完成企業(yè)日常事務(wù)中的人事工作,降低人力資源管理的成本,使管理者能集中精力實(shí)現(xiàn)企業(yè)戰(zhàn)略目標(biāo)。人力資源管理系統(tǒng)的具體目標(biāo)如下:?對企業(yè)人力資源管理的基本信息進(jìn)行管理.管理企業(yè)的員工信息(即人事管理功能)。
實(shí)現(xiàn)為個人提供網(wǎng)絡(luò)工作平臺的功能。實(shí)現(xiàn)企業(yè)的應(yīng)聘信息的管理功能。實(shí)現(xiàn)企業(yè)員工培訓(xùn)的一系列相關(guān)信息的管理。員工薪酬信息管理。系統(tǒng)用戶信息的管理。?系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)采用流行的Struts+Spring+Hibernate組合框架:Struts專注于表現(xiàn)層結(jié)構(gòu),使用典型的MVC結(jié)構(gòu);Hibernate處于該架構(gòu)的持久化層,用于管理系統(tǒng)與數(shù)據(jù)庫打交道的所有過程,實(shí)現(xiàn)最基本的數(shù)據(jù)庫操作,以及完成數(shù)據(jù)持久化任務(wù);而Spring處于中間層,利用其優(yōu)秀的反轉(zhuǎn)控制(IoC)和事物管理特性,實(shí)現(xiàn)表現(xiàn)層、業(yè)務(wù)層和持久化層三者之間的松散耦合,并負(fù)責(zé)完成和實(shí)現(xiàn)系統(tǒng)所有事務(wù)。系統(tǒng)架構(gòu)如下圖所示:表現(xiàn)層Struts-MVC實(shí)現(xiàn)各個功能的界面,負(fù)責(zé)與用戶交互(Action、表現(xiàn)層Struts-MVC實(shí)現(xiàn)各個功能的界面,負(fù)責(zé)與用戶交互(Action、JSP、ActionForm)業(yè)務(wù)層Spring事物管理、HibernateSession管理、Service類持久化層Hibernate
使用HQL操
作數(shù)據(jù)庫,實(shí)
現(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ù)輸入.此外,為了加強(qiáng)系統(tǒng)的可靠性,該層應(yīng)該負(fù)責(zé)表現(xiàn)數(shù)據(jù)庫的校驗(yàn),例如輸入的用戶名是否合法、密碼是否超過長度等等。從而為業(yè)務(wù)層提供比較合理的數(shù)據(jù)。業(yè)務(wù)層(Spring):完成復(fù)雜事物邏輯處理和業(yè)務(wù)校檢,提供完善的事務(wù)管理功能。該層隔離了表現(xiàn)層和持久化層,降低了系統(tǒng)的耦合性,使二者只需關(guān)注本層任務(wù)。止匕外,本系統(tǒng)中的Spring還負(fù)責(zé)管理數(shù)據(jù)源(DataSource),為Hibernate數(shù)據(jù)庫操作提供連接。使用反轉(zhuǎn)控制特性,將DAO和業(yè)務(wù)方法注冊,使得系統(tǒng)運(yùn)行時(shí)Action只需調(diào)用業(yè)務(wù)邏輯接口(Service接口),而業(yè)務(wù)方法只需要調(diào)用各持久化對象的DAO接口。持久化層(Hibernate):實(shí)現(xiàn)O/R映射,利用HQL完成基本的數(shù)據(jù)庫操作,包括添加、刪除和修改。三、數(shù)據(jù)庫設(shè)計(jì)及實(shí)現(xiàn)在完成需求分析、功能設(shè)計(jì)和架構(gòu)設(shè)計(jì)后,開發(fā)的第一個步驟就是完成數(shù)據(jù)庫的設(shè)計(jì),以及建立數(shù)據(jù)庫服務(wù)器.根據(jù)前面的功能分析,可以抽象出本系統(tǒng)的數(shù)據(jù)庫實(shí)體對象:用戶、產(chǎn)品、訂單、訂單條目、產(chǎn)品評論、產(chǎn)品類別,其具體內(nèi)容及關(guān)系如下圖所示:數(shù)據(jù)庫設(shè)計(jì)這個人力資源系統(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]GOGOGOGOGOSETANSI_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]SETANSI_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_IDENTIFIERONSETANSI_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管理和實(shí)現(xiàn),主要完成將對象持久化到數(shù)據(jù)庫的任務(wù).以下是系統(tǒng)中的持久層的實(shí)現(xiàn)。⑴設(shè)計(jì)持久化對象(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è)計(jì),系統(tǒng)中將會包含六個持久化對象,分別對應(yīng)數(shù)據(jù)庫中的六張表。持久化對象中必須包含字段的getter和setter,但是并不意味著只能包含這些方法.其中還可以加入數(shù)據(jù)的校驗(yàn)、格式化、初始化、組合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在進(jìn)行數(shù)據(jù)庫操作時(shí)才能準(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="falseoptimistic-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_personManage〈/value〉</property〉二〈propertyname="username”)〈value>sa〈/value〉</property>〈/bean〉—〈!—-Spring支持Hibernate框架的配置,得到SessionFactory—-〉二<beanid=〃localSessionFactory〃class=”org.springframework.orm.hibernate3.LocalSessionFactoryBeanlazy—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ù)庫和程序之間的一個橋梁,負(fù)責(zé)將二者聯(lián)系起來,并且指定了聯(lián)系二者的某些規(guī)則:連接數(shù)據(jù)庫的用戶名和密碼、數(shù)據(jù)庫方言、數(shù)據(jù)源等等。五、實(shí)現(xiàn)DAO層在前面分別建立了數(shù)據(jù)庫及持久化對象,并且通過Spring架起來操作數(shù)據(jù)庫的橋梁,這一切都為實(shí)際的數(shù)據(jù)庫操作做好了準(zhǔn)備。下面來詳細(xì)介紹進(jìn)行數(shù)據(jù)庫操作的DAO層,分別從定義和實(shí)現(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)心其細(xì)節(jié)。由于DAO中實(shí)現(xiàn)的操作,通常來講是針對一個持久化對象的基本操作。因此,每一個持久化對象都有一個與之對應(yīng)的DAO類.在本系統(tǒng)中,每一個DAO都包含一個接口及其實(shí)現(xiàn)類,于是該層暴露給業(yè)務(wù)層的只是DAO接口,實(shí)現(xiàn)了良好的設(shè)計(jì)模式。根據(jù)以上分析,系統(tǒng)中包含六個獨(dú)立的DAO組件,每個組件包含兩個文件(接口及其實(shí)現(xiàn)類)。這些組件之間相互獨(dú)立,不產(chǎn)生任何關(guān)系。⑵實(shí)現(xiàn)DAO組件由于DAO組件中實(shí)現(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ù),該方法的返回類型為ObjectpublicObjectgetObjectForm(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ù),該方法的返回類型為ListpublicListgetObjectList(Stringcondition) {Listlist=null;try{list=getHibernateTemplate()。find(condition);}catch(DataAccessExceptionex){ex.printStackTrace();}returnlist;}}}〃修改一組數(shù)據(jù),該方法的返回類型為booleanpublicbooleanupdateObjectForm(Objectobject){booleanflag=false;try{getHibernateTemplate()。update(object);flag=true;}catch(DataAccessExceptionex){ex.printStackTrace();}returnflag;}〃添加一組數(shù)據(jù),該方法的返回類型為booleanpublicvoidinsertObjectForm(Objectobject) {try{getHibernateTemplate()。save(object);}catch(DataAccessExceptionex) {ex。printStackTrace();〃刪除一組數(shù)據(jù),該方法的返回類型為booleanpublicbooleandeleteObjectForm(Objectobject){try{getHibernateTemplate。。delete(object);returntrue;}catch(DataAccessExceptionex){ex。printStackTrace();returnfalse;⑶部署DAO層在實(shí)現(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〉六、實(shí)現(xiàn)Service層前面建立了數(shù)據(jù)庫、持久層,以及實(shí)現(xiàn)了數(shù)據(jù)庫操作的DAO層。但是所有的應(yīng)用系統(tǒng)都有業(yè)務(wù)緊密聯(lián)系在一起的,例如查詢CD、訂貨等等,而不是簡單的數(shù)據(jù)庫操作。下面來詳細(xì)介紹CDStore中各種業(yè)務(wù)操作的實(shí)現(xiàn)。⑴Service組件的設(shè)計(jì)Service層也就是架構(gòu)圖中的業(yè)務(wù)層,該組件負(fù)責(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接口實(shí)現(xiàn)類.其中Service接口直接暴露給表現(xiàn)層中的Action,ServiceSupport幫助Service實(shí)現(xiàn)類組裝對DAO組件的引用,Service實(shí)現(xiàn)類毫無疑問是用來管理和實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯的?!础碽eanname=”/department"⑵Service組件的實(shí)現(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");requestosetAttribute(“l(fā)ist",list);request.setAttribute(”employeeList",objectDao.getObjectList("fromEmployeeForm”));returnmapping.findForward("queryDepartment”);//部門信息保存publicActionForwardinsertDepartment(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse) {DepartmentFormdepartmentForm=(DepartmentForm)form;DepartmentFormdepartmentform=(DepartmentForm)objectDao。getObjectForm("fromDepartmentFormwheredt_name=’”+departmentForm。getDt_name()+"’”);if(departmentform==null){objectDao.insertObjectForm(departmentForm);returnqueryDepartment(mapping,form,request,response);}else{request.setAttribute(”result”,”不能夠重復(fù)提交!!!");returnmapping.findForward(”operationDepartment”);}}//部門信息刪除publicActionForwarddeleteDepartment(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){DepartmentFormdepartmentform=(DepartmentForm)objectDao。getObjectForm("fromDepartmentFormwhereid='”+requestogetParameter("id")+"'”);if(objectDao。deleteObjectForm(departmentform)){}else{request.setAttribute(”result","刪除部門信息失?。?!!”);}returnmapping。findForward("operationDepartment");}}在實(shí)現(xiàn)了Service組件以后,要在Spring的配置文件將其注冊,以便Action可以找到并調(diào)用其業(yè)務(wù)方法。另外,還要配置文件中指定Service類中應(yīng)用的DAO。配置文件內(nèi)容如下:class=//comowy.action□DepartmentAction"singleton="false"lazy-init="default"autowire=,,default"dependency—check=,,default,/>二<propertyname=”objectDao"〉〈refbean=”objectDao”/〉</property〉</bean〉到現(xiàn)在為止經(jīng)完成了系統(tǒng)的持久化層和業(yè)務(wù)層的編碼實(shí)現(xiàn),后文是功能的具體實(shí)現(xiàn)。七公共模塊設(shè)計(jì)部門管理對部門信息進(jìn)行添加、查詢及刪除操作部「I名流旬世時(shí)間學(xué)口人敷徵江■:士
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程安全生產(chǎn)責(zé)任追究合同
- 2025年度外貿(mào)合同書樣本:國際貨物運(yùn)輸保險(xiǎn)合同
- 2025年度商業(yè)地產(chǎn)產(chǎn)權(quán)轉(zhuǎn)讓與物業(yè)管理合同
- 2025年度園林綠化養(yǎng)護(hù)臨時(shí)用工合作協(xié)議
- 二零二五年度移動寬帶網(wǎng)絡(luò)用戶滿意度提升合同
- 工業(yè)園區(qū)升級補(bǔ)貼合同
- 2025年度建筑工程合同監(jiān)理實(shí)施辦法
- 2025年度商場顧客滿意度調(diào)查與提升合同
- 2025年度房屋租賃安全免責(zé)合同(帶寵物)
- 2025年導(dǎo)電銀漿行業(yè)現(xiàn)狀分析:導(dǎo)電銀漿市場復(fù)合年增長率為20.12%
- 一科一品一骨科護(hù)理
- 加氣站安全培訓(xùn)課件
- 設(shè)備維修的基本技能培訓(xùn)
- 2025年中國郵政招聘筆試參考題庫含答案解析
- 人教版(2024)七年級英語上冊新教材的變化及教學(xué)建議課件
- 2025年中考語文一輪復(fù)習(xí):九年級上冊知識點(diǎn)梳理
- 2025年新聞部工作計(jì)劃
- 中國近代史綱要西安財(cái)經(jīng)大學(xué)練習(xí)題復(fù)習(xí)資料
- 中國成人ICU鎮(zhèn)痛和鎮(zhèn)靜治療指南解讀
- 延長保修服務(wù)合同
- 2025中考英語作文19個熱點(diǎn)話題及范文
評論
0/150
提交評論