人力资源管理系统SSH实践课程设计方案正式版_第1页
人力资源管理系统SSH实践课程设计方案正式版_第2页
人力资源管理系统SSH实践课程设计方案正式版_第3页
人力资源管理系统SSH实践课程设计方案正式版_第4页
人力资源管理系统SSH实践课程设计方案正式版_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计Ⅱ设计报告题目:人力资源管理系统的SSH实践课程设计学号:姓名:学院:专业班级:指导教师:设计时间:2010年6月指导老师评语:评定成绩:签名:日期:目录TOC\o"1-3"\h\z\uHYPERLINK\l”_Toc29178493"一、需求分析及总体设计 PAGEREF_Toc29178493\h2HYPERLINK二、系统结构设计ﻩPAGEREF_Toc29178494\h3HYPERLINK\l”_Toc29178495"三、数据库设计及实现ﻩPAGEREF_Toc29178495\h5HYPERLINK四、Hibernate持久层ﻩPAGEREF_Toc29178496\h11HYPERLINK⑴DAO组件的定义ﻩPAGEREF_Toc29178501\h16HYPERLINK\l”_Toc29178502"⑵实现DAO组件 PAGEREF_Toc29178502\h17HYPERLINK\l"_Toc29178503"⑶部署DAO层ﻩPAGEREF_Toc29178503\h19HYPERLINK\l"_Toc29178504”六、实现Service层ﻩPAGEREF_Toc29178504\h19HYPERLINK\l”_Toc29178505"⑴Service组件的设计ﻩPAGEREF_Toc29178505\h19HYPERLINK\l"_Toc29178506”⑵Service组件的实现 PAGEREF_Toc29178506\h20HYPERLINK\l”_Toc29178507"七公共模块设计 PAGEREF_Toc29178507\h22HYPERLINK\l"_Toc29178508"部门管理ﻩPAGEREF_Toc29178508\h22HYPERLINK\l"_Toc29178509"员工管理ﻩPAGEREF_Toc29178509\h22HYPERLINK\l"_Toc29178510"招聘管理ﻩPAGEREF_Toc29178510\h23HYPERLINK\l"_Toc29178511”培训管理ﻩPAGEREF_Toc29178511\h23HYPERLINK\l"_Toc29178512”奖惩管理ﻩPAGEREF_Toc29178512\h23HYPERLINK\l"_Toc29178513"薪资管理 PAGEREF_Toc29178513\h24HYPERLINK\l"_Toc29178514"系统管理ﻩPAGEREF_Toc29178514\h24HYPERLINK\l”_Toc29178515"用户修改ﻩPAGEREF_Toc29178515\h24HYPERLINK\l”_Toc29178516”八系统开发总结总结ﻩPAGEREF_Toc29178516\h24HYPERLINK\l”_Toc29178517”参考文献ﻩPAGEREF_Toc29178517\h25HYPERLINK\l”_Toc266885467"一、需求分析及总体设计通过人力资源管理系统可使管理者快速高效地完成企业日常事务中的人事工作,降低人力资源管理的成本,使管理者能集中精力实现企业战略目标。人力资源管理系统的具体目标如下:对企业人力资源管理的基本信息进行管理。管理企业的员工信息(即人事管理功能)。实现为个人提供网络工作平台的功能。实现企业的应聘信息的管理功能。实现企业员工培训的一系列相关信息的管理。员工薪酬信息管理.系统用户信息的管理。系统运行稳定、安全可靠。二、系统结构设计本系统采用流行的Struts+Spring+Hibernate组合框架:Struts专注于表现层结构,使用典型的MVC结构;Hibernate处于该架构的持久化层,用于管理系统与数据库打交道的所有过程,实现最基本的数据库操作,以及完成数据持久化任务;而Spring处于中间层,利用其优秀的反转控制(IoC)和事物管理特性,实现表现层、业务层和持久化层三者之间的松散耦合,并负责完成和实现系统所有事务。系统架构如下图所示:IOCIOC表现层Struts-MVC实现各个功能的界面,负责与用户交互(Action、JSP、ActionForm)业务层Spring事物管理、HibernateSession管理、Service类DAO类持久化层Hibernate使用HQL操作数据库,实现对象持久化(hbm文件)上图各层的功能如下:表现层(Struts):提供与用户交互的程序界面,使用ActionForm获取用户输入数据,在Action中调用相应的业务处理方法完成业务处理,最后再根据业务方法的返回结果,使用不同的页面显示处理结果.该层不关心业务处理的过程,不与数据库直接打交道,只是为业务方法提供必要的数据输入。此外,为了加强系统的可靠性,该层应该负责表现数据库的校验,例如输入的用户名是否合法、密码是否超过长度等等。从而为业务层提供比较合理的数据。业务层(Spring):完成复杂事物逻辑处理和业务校检,提供完善的事务管理功能。该层隔离了表现层和持久化层,降低了系统的耦合性,使二者只需关注本层任务。此外,本系统中的Spring还负责管理数据源(DataSource),为Hibernate数据库操作提供连接.使用反转控制特性,将DAO和业务方法注册,使得系统运行时Action只需调用业务逻辑接口(Service接口),而业务方法只需要调用各持久化对象的DAO接口。持久化层(Hibernate):实现O/R映射,利用HQL完成基本的数据库操作,包括添加、删除和修改。管理员管理员部门管理培训管理招聘管理系统管理员工管理薪资管理奖惩管理管理员登录人力资源系统首页人力资源管理系统人力资源管理系统部门管理招聘管理员工管理薪资管理系统管理惩奖管理培训管理三、数据库设计及实现在完成需求分析、功能设计和架构设计后,开发的第一个步骤就是完成数据库的设计,以及建立数据库服务器.根据前面的功能分析,可以抽象出本系统的数据库实体对象:用户、产品、订单、订单条目、产品评论、产品类别,其具体内容及关系如下图所示:数据库设计这个人力资源系统的数据库,用了七个数据库表,db_personManager,下面的表有,培训信息表,薪资信息表,管理员信息表,招聘信息表,员工信息表,部门信息表,奖惩信息表,在数据库中是对应:tb_tarin,tb_play.tb_manager,tb_inviteJob,tb_employe,tb_department,tb_cj.用的是Sqlserver2005的数据库。建立数据库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执行完成上述所有语句后,sqlserver2005中建立的db_personManager所有表,如下图所示:四、Hibernate持久层持久层由Hibernate管理和实现,主要完成将对象持久化到数据库的任务.以下是系统中的持久层的实现。⑴设计持久化对象(PO)持久化对象(PO,PersistantObject)是持久层的关键元素,它是系统操作的数据库表的Java体现。Hibernate通过HQL直接操纵持久化对象完成相应的数据库操作。一般情况下,持久化对象是简单的JavaBean,即POJO(PlainOldJavaObject)编程模型。其中包含与其相对应的数据库表中所有字段的getter和setter。根据本系统的数据库设计,系统中将会包含六个持久化对象,分别对应数据库中的六张表.持久化对象中必须包含字段的getter和setter,但是并不意味着只能包含这些方法。其中还可以加入数据的校验、格式化、初始化、组合HQL语句等等操作,使其变得更加有意义,也更加利于在系统中的使用。⑵创建持久化对象.以db_department表为例,创建与其对应的持久化对象类,命名为DepartmentForm。java.db_department持久化类的源代码如下:这个当中是没有直接用,而是在动作中体现(form)DepartmentForm。javapacka.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;ﻩ}ﻩ}⑶映射持久化对象在创建了持久化类以后,需要编写与其相对应的映射文件(*.hmb.xml),有了这些映射文件,Hibernate在进行数据库操作时才能准确定位。下面是持久化类department对应的映射文件DepartmentForm.hbm.xml:<?xmlversion="1。0"encoding="utf-8"?>

〈!DOCTYPEhibernate-mapping(ViewSourceforfulldoctype。.。)>—〈!--ﻩMappingfileautogeneratedbyMyEclipse-HibernateTools

-—>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm.hbm.xml"\l”#"-<hibernate—mappingdefault—cascade="none"default—access="property"default-lazy="true"auto-import="true"〉HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm.hbm。xml"\l”#"-〈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">HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm。hbm.xml”\l”#”-<idname="id"type="java.lang。String”>

<columnname=”id”/>

<generatorclass=”native”/〉

</id>HYPERLINK”file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm.hbm.xml"\l”#"-〈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〉HYPERLINK”file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm。hbm.xml"—<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>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm.hbm.xml"\l"#"—〈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>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm。hbm.xml"\l"#”-<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>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm.hbm.xml”type=”java。lang.String"unique="false"optimistic-lock="true"lazy="false"generated=”never"〉

<columnname="tn_address”length="10"not—null=”true"/>

</property>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm。hbm.xml"\l"#"—<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>HYPERLINK"file:///D:\\我的文档\\桌面\\刘波_20075549\\personManager\\src\\com\\wy\\form\\DepartmentForm。hbm.xml"\l”#"—<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>其他持久化类的对应映射文件,限于篇幅,在此不再列出。只是建立了持久化类及其配置文件,还要让Hibernate可以找到它,于是把这些映射文件添加到Hibernate的配置文件中(一般是hibernate.cfg。xml)。由于本系统由Spring来管理数据源和SessionFactory,所以要把映射文件添加到Spring的配置文件applicationContext.xml文件中。代码如下:—<!——数据库连接的取得

-->HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB—INF\\applicationContext。xml”lazy—init="default”autowire=”default”dependency-check="default”>HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext。xml"-〈propertyname="driverClassName”>

<value>com.microsoft.jdbc。sqlserver。SQLServerDriver</value>

</property>HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext。xml”\l”#”-<propertyname="username">

〈value〉sa</value>

〈/property>

</bean>-〈!-—Spring支持Hibernate框架的配置,得到SessionFactory

-->HYPERLINK”file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext.xml"\l"#"—〈beanid="localSessionFactory"class="org。springframework.orm.hibernate3。LocalSessionFactoryBean"lazy-init=”default”autowire="default"dependency—check=”default"〉HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext.xml”\l”#"-<propertyname=”dataSource”>

<refbean="dataSource”/>

〈/property>HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext.xml"\l"#”—〈propertyname="hibernateProperties">HYPERLINK”file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext。xml”\l"#”-<props>

〈propkey="hibernate.dialect">org.hibernate。dialect.SQLServerDialect</prop>

</props>

</property>HYPERLINK”file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext.xml”\l"#"-<propertyname="mappingResources"〉HYPERLINK”file:///F:\\JSP全程开发实录\\TM\\05\\WEB-INF\\applicationContext。xml"\l”#"-<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就像是数据库和程序之间的一个桥梁,负责将二者联系起来,并且指定了联系二者的某些规则:连接数据库的用户名和密码、数据库方言、数据源等等。五、实现DAO层在前面分别建立了数据库及持久化对象,并且通过Spring架起来操作数据库的桥梁,这一切都为实际的数据库操作做好了准备。下面来详细介绍进行数据库操作的DAO层,分别从定义和实现两方面入手。⑴DAO组件的定义DAO是指数据访问对象(DataAccessObject),主要任务是直接和数据库打交道,完成最基本的查询、创建、更新和删除等操作。在Hibernate持久化层,DAO使用HQL操作持久化对象,完成这样一系列的基本操作。而该层暴露给业务层的只是一个个方法,使得数据库操作对业务层透明,也就是说业务层只需专心处理业务逻辑,而对于逻辑中发生的数据库操作,都有DAO完成和处理,业务层不用关心其细节。由于DAO中实现的操作,通常来讲是针对一个持久化对象的基本操作。因此,每一个持久化对象都有一个与之对应的DAO类。在本系统中,每一个DAO都包含一个接口及其实现类,于是该层暴露给业务层的只是DAO接口,实现了良好的设计模式。根据以上分析,系统中包含六个独立的DAO组件,每个组件包含两个文件(接口及其实现类).这些组件之间相互独立,不产生任何关系。⑵实现DAO组件由于DAO组件中实现的数据库相当简单,因此编写起来也十分简单.下面是针对整体的对象的DAO组件接口ObjectDaojavapackagecom。wy.dao;importjava。util.List;importorg.springframework。dao.DataAccessException;importorg.springframework.orm。hibernate3。support.HibernateDaoSupport;publicclassObjectDaoextendsHibernateDaoSupport{ﻩ//condition为条件,查询一组数据,该方法的返回类型为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为条件,查询多组数据,该方法的返回类型为List publicListgetObjectList(Stringcondition){ﻩﻩListlist=null;ﻩﻩtry{ﻩﻩﻩlist=getHibernateTemplate().find(condition); ﻩ }catch(DataAccessExceptionex){ ﻩ ex。printStackTrace();ﻩﻩ} returnlist; }//修改一组数据,该方法的返回类型为booleanﻩpublicbooleanupdateObjectForm(Objectobject){ﻩﻩbooleanflag=false;ﻩﻩtry{ﻩﻩ getHibernateTemplate().update(object);ﻩﻩﻩflag=true;ﻩ }catch(DataAccessExceptionex){ﻩﻩ ex.printStackTrace();ﻩ }ﻩﻩreturnflag; }ﻩ//添加一组数据,该方法的返回类型为booleanﻩpublicvoidinsertObjectForm(Objectobject){ﻩﻩtry{ﻩﻩﻩ ﻩgetHibernateTemplate().save(object);ﻩﻩﻩﻩﻩﻩ}catch(DataAccessExceptionex){ﻩﻩﻩex.printStackTrace();ﻩ } ﻩ}ﻩ//删除一组数据,该方法的返回类型为booleanﻩpublicbooleandeleteObjectForm(Objectobject){ try{ﻩﻩﻩgetHibernateTemplate().delete(object);ﻩﻩﻩreturntrue; ﻩ}catch(DataAccessExceptionex){ ﻩﻩex.printStackTrace();ﻩﻩﻩreturnfalse; ﻩ}ﻩ}}⑶部署DAO层在实现了DAO层以后,要将其暴露给业务层,使得业务层可以调用它们,于是就需要将其在Spring的配置文件applicationContext.xml中注册,也就用到了Spring的IOC特性。配置文件中相关内容为:HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB—INF\\applicationContext.xml”-<beanid=”objectDao"class="com.wy.dao.ObjectDao"lazy-init="default"autowire=”default"dependency-check=”default"〉HYPERLINK"file:///F:\\JSP全程开发实录\\TM\\05\\WEB—INF\\applicationContext.xml"\l"#"-<propertyname="sessionFactory">

<refbean="localSessionFactory”/>

</property〉

〈/bean〉六、实现Service层前面建立了数据库、持久层,以及实现了数据库操作的DAO层。但是所有的应用系统都有业务紧密联系在一起的,例如查询CD、订货等等,而不是简单的数据库操作。下面来详细介绍CDStore中各种业务操作的实现.⑴Service组件的设计Service层也就是架构图中的业务层,该组件负责调用DAO层的数据操作方法完成业务逻辑的处理,并且该层讲将业务方法提供给表现层。于是在表现层看到的是一个个具有业务意义的方法,如login、register,得到的也是这些业务方法返回的结果。本系统中的Service组件包含了三个文件:Service接口、ServiceSupport和Service接口实现类.其中Service接口直接暴露给表现层中的Action,ServiceSupport帮助Service实现类组装对DAO组件的引用,Service实现类毫无疑问是用来管理和实现复杂的业务逻辑的。⑵Service组件的实现在这里是Action动作,用DepartForm做示范,来表示提供的相应的服务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, ﻩ HttpServlet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论