《J2EE开发常用软件体系架构模式.ppt》由会员分享,可在线阅读,更多相关《J2EE开发常用软件体系架构模式.ppt(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、J2EE开发常用软件体系架构模式华南师范大学软件学院作者:杨劲松struts,hibernate,spring struts,hibernate,spring 及其衍生框架及其衍生框架主要内容:单击此处添加文字内容软件体系架构单击此处添加文字内容J2EE的体系架构单击此处添加文字内容 其他开发框架单击此处添加文字内容SSH框架12431、软件体系架构软件无处不在软件无处不在1/28/2023华南师范大学软件学院31、软件体系架构软件开发现状软件开发现状超时超预算被取消按时按预算完成15%25%60%设计 集成和系统测试50-80%1/28/2023华南师范大学软件学院41、软件体系架构软件危机
2、的案例软件危机的案例1/28/2023华南师范大学软件学院5 IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1.3 1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气
3、层时因打不开降落伞而烧毁1、软件体系架构软件为什么会失效软件为什么会失效1/28/2023华南师范大学软件学院61、软件体系架构产生软件危机的根源产生软件危机的根源1/28/2023华南师范大学软件学院7软件规模越来越大、复杂度越来越高用户需求不明确缺乏正确有效的理论及工程指导 对用户要求、实现条件没有完整准确的分析就匆忙编写程序,是许多软件开发失败的主要原因p在此种背景下,人们认识到软件体系架构的重要性p软件工程研究初期重点放在数据结构和算法的选择如 Knuth 提出了数据结构+算法=程序1、软件体系架构什么是软件体系架构什么是软件体系架构pDewayne Perry和和A1exander
4、Wo1f软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处处理构件理构件、数据构件数据构件和连接构件连接构件。处理构件负责对数据进行加工数据构件是被加工的信息连接构件把体系结构的不同部分组组合连接起来p Mary Shaw 和和 David Garlan软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构 关于通讯、同步与数据存取的协议,等1/28/2023华南师范大学软件学院81、软件体系架构什么是软件体系架构什么是软件体系架构pKruchten软件体系结构有四个角度,它们从不同方
5、面对系统进行描述:概念角度概念角度描述系统的主要构件及它们之间的关系;模块角度模块角度包含功能分解与层次结构;运行角度运行角度描述了一个系统的动态结构;代码角度代码角度描述了各种代码和库函数在开发环境中的组织p不同研究背景、应用背景的人员从不同的角度给出了多达近不同研究背景、应用背景的人员从不同的角度给出了多达近百种定义,但有两点共识:百种定义,但有两点共识:软件体系结构对于软件开发具有重要意义,必须采用良好的设计原则达到良好的结构设计主流的定义都认为:软件体系结构是用来表示软件系统的总体结构主流的定义都认为:软件体系结构是用来表示软件系统的总体结构的,该结构由软件构件和构件之间的关系及约束构
6、成的,该结构由软件构件和构件之间的关系及约束构成1/28/2023华南师范大学软件学院92、J2EE的体系架构pJ2EE为企业应用系统的开发提供了一种多层分布式企业应用模型按应用逻辑按功能不同可以划分为不同类型的组件1/28/2023华南师范大学软件学院客户层,客户层,运行在客户计算机上的组件。Web Web 层,层,运行在J2EE服务器上的组件。业务层,业务层,同样是运行在J2EE服务器上的组件。企业信息系统层(企业信息系统层(EISEIS),),是指运行在EIS服务器上的软件系统。J2EE分层结构分层结构2、J2EE的体系架构pJ2EE1/28/2023华南师范大学软件学院11用户与系统的
7、接口逻辑功能是显示数据可以是在客户端层内运行的浏览器、基于Java的程序或者其它web型编程环境2、J2EE的体系架构pJ2EE1/28/2023华南师范大学软件学院122、J2EE的体系架构pJ2EE1/28/2023华南师范大学软件学院132、J2EE的体系架构1/28/2023华南师范大学软件学院14什么是模式?什么是框架什么是模式?什么是框架?p模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。p模式分为:体系结构模式设计模式p框架,即framework。建立在体系结构模式的基础上。包括大量组件,设计模式,与某一领域的具体应用
8、无关。pC/S:以数据库为中心pB/S多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。3、SSH框架1/28/2023华南师范大学软件学院15SSHSSH简介简介pStruts(表示层)+Spring(业务层)+Hibernate(持久层)1/28/2023华南师范大学软件学院163、SSH框架SSHSSH简介简介pStruts(表示层)+Spring(业务层)+Hibernate(持久层)1/28/2023华南师范大学软件学院173、SSH框架SSHSSH简介简介pStruts(表示层)+Spring(业务层)+Hibernate(持久层
9、)1/28/2023华南师范大学软件学院183、StrutsModel1Model1与与Model2Model2设计模式设计模式p以JSP为中心的开发模型,称为Model1(JSP+JAVABEAN)业务逻辑与表示逻辑混和,不利维护与重用HTML中嵌入了大量的JAVA代码验证、流程控制、更新程序的状态全部在JSP中完成BROWSERJSPRequestResponseJavaBeanApplication ServerEnterprise Servers/Data Sources传统的Model 1(JSP+JAVABEAN)1/28/2023华南师范大学软件学院193、StrutsModel
10、1Model1与与Model2Model2设计模式设计模式p以servlet为中心的开发模型,Model2(JSP+Servlet+JAVABEAN)BROWSER(Controller)ServletRequestResponse(Model)JavaBeanEnterprise Servers/Data Sources(View)JSPModel2(JSP+Servlet+JAVABEAN)pMVC是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC将应用程序分成3部分:模型、视图和控制器。1/28/2023华南师范大学软件学院203、StrutsMVCMVC模式模式pMVC
11、模式模型模型(Model)(Model)是应用程序的主体部分。模型表示业务数据,或者业务逻辑。视图视图(View)(View)是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。控制器控制器(Controller)(Controller)工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。(控制器)接受用户请求调用模型响应用户请求选择视图显示响应结果(视图)显示模型状态接受数据更新请求把用户输入数据传给控制器(模型)代表应用程序状态响应状态查询处理业务流程通知视图业务状态更新方法调用事件选择视图业务处理用户请求状态查询通知数据更新1/28/2023华南师范大学软件学院
12、213、StrutsStrutsStruts框架概述框架概述pStruts是一个现成的、优秀的、基于MVC的Web应用框架。浏览器Web服务器ActionServletFormBean(模型)JavaBeanEJBStruts-config.xml数据库MessageResouseJSP(视图)(控制器)Servlet/JSP容器Struts框架结构1/28/2023华南师范大学软件学院223、StrutsStrutsStruts框架概述框架概述pStruts是一个现成的、优秀的、基于MVC的Web应用框架。浏览器Web服务器ActionServletFormBean(模型)JavaBeanE
13、JBStruts-config.xml数据库MessageResouseJSP(视图)(控制器)Servlet/JSP容器Struts框架结构1/28/2023华南师范大学软件学院233、StrutsStrutsStruts框架概述框架概述pStruts是一个现成的、优秀的、基于MVC的Web应用框架。浏览器Web服务器ActionServletFormBean(模型)JavaBeanEJBStruts-config.xml数据库MessageResouseJSP(视图)(控制器)Servlet/JSP容器Struts框架结构1/28/2023华南师范大学软件学院243、StrutsStrut
14、sStruts的程序流程的程序流程JavaBeanJSP页面页面ClientActionActionServletActionForm1.HTTP 1.HTTP 请请请请求求求求2.2.填充填充填充填充FormBeanFormBean3.3.转发转发转发转发HTTPHTTP请请请请求求求求4.4.调调调调用用用用ActionFormActionForm5.5.调调调调用用用用JavaBeanJavaBean6.6.回送回送回送回送ActionForwardActionForward7.7.转发转发转发转发HTTPHTTP请请请请求求求求8.8.调调调调用用用用JavaBeanJavaBean9
15、.HTTP9.HTTP响响响响应应应应Struts-config.xmlStruts的程序流程1/28/2023华南师范大学软件学院253、StrutsStruts1.xStruts1.x实例实例pStruts1.xStruts1.x实例实例(实现用户登录操作)(实现用户登录操作)用户将看到一个登录页面,要求用户输入用户名以及密码如果用户名以及密码都是admin,提示登录成功否则提示登录失败Login.jsplogin_error.jsplogin_success.jsp1/28/2023华南师范大学软件学院263、StrutsStruts1.xStruts1.x实例实例pStruts1.xS
16、truts1.x实例实例(实现用户登录操作(实现用户登录操作)下载并解压Struts项目从Apache网站下载struts;将压缩包解压到一个目录,此目录为STRUTS_HOME目录;安装Struts将STRUTS_HOME/lib目录下的所有.jar文件拷贝到刚创建的web项目的/WEB-INF/lib目录下;配置web.xml,添加Servlet映射配置;编写Action类、编写ActionForm类 Action类处理业务流程;ActionForm类不是必须的,如果要接收客户端提交的数据时需要;配置struts-config.xml在struts-config.xml文件中配置Actio
17、n和ActionForm;编写相应JSP页面1/28/2023华南师范大学软件学院273、Strutsweb.xml web.xml 的配置的配置 action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml 2 action *.do struts-config.xml存放路径在显示层所有以*.do为扩展名提交的URL,都会交由这个Servlet来处理。1/28/2023华南师范大学软件学院283、Strutsstruts-config.xml struts-config.xml 的配置的配置
18、指定Struts应用中所有使用的ActionForm对象ActionForm对象指定处理相关业务的ActionAction处理完业务后的跳转页面1/28/2023华南师范大学软件学院293、StrutsLoginActionForm.javaLoginActionForm.javapublic class LoginActionForm extends ActionForm private String userName;private String passWord;public String getUserName()return userName;public void setUserN
19、ame(String userName)this.userName=userName;public String getPassWord()return passWord;public void setPassWord(String passWord)this.passWord=passWord;1/28/2023华南师范大学软件学院303、StrutsLoginAction.javaLoginAction.javapublic class LoginAction extends Action public ActionForward execute(ActionMapping mapping
20、,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception String path=error;LoginActionForm loginActionForm=(LoginActionForm)form;String userName=loginActionForm.getUserName();String passWord=loginActionForm.getPassWord();if(null!=userName&admin.equals(userName)&null!
21、=passWord&admin.equals(passWord)path=success;request.setAttribute(userName,userName);else path=error;return mapping.findForward(path);1/28/2023华南师范大学软件学院313、StrutsLoginActionLoginAction应用程序的流程图应用程序的流程图LoginAction应用程序的流程图1/28/2023华南师范大学软件学院323、StrutsStruts1.xStruts1.x与与Struts2.x Struts2.x pStruts2同为M
22、VC设计模式的开源框架在Struts2并不是在原有的Struts1.x基础上的升级版本,而是来处另外一个非常有名的MVC框架WebWork。官方描述:pStruts1.x存在的问题:在表现层技术单一与Servlet API耦合严重,不便于测试代码严重依赖Struts API 单元测试困难令人头痛的ActionFormpStruts2的特点无需与Servlet API整合,更容易测试优雅的请求参数封装灵活的视图技术丰富的表达式语言机动,灵活,简单的配置线程安全的控制器(Action)1/28/2023华南师范大学软件学院333、Struts Struts2.x Struts2.x框架结构框架结构
23、 pStruts2框架结构Struts2的体系与Struts1.x体系差别非常大,因为Struts2使用了WebWork的设计核心(XWork)。在Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与ServletAPI分离。1/28/2023华南师范大学软件学院343、Struts Struts2.x Struts2.x框架结构框架结构 pStruts2框架结构Struts2的体系与Struts1.x体系差别非常大,因为Struts2使用了WebWork的设计核心(XWork)。在Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与ServletAPI分离
24、。1核心控制器FilterDispatcher根椐请求决定调用合适的Action拦截器自动对应用运用通用功能浏览器发送请求234回调用Action上的execute方法5Action的execute()方法处理结果信息输出到浏览器1/28/2023华南师范大学软件学院353、StrutsStruts2Struts2的核心思想的核心思想p仍然是仍然是MVCMVC设计模式设计模式 Struts2的控制器由两部分组成FilterDispatcher业务逻辑ActionStruts2提供了丰富的视图展示JSPFreeMarker、VelocityJasperReport等报表类型pAOP(Aspect
25、 Oriented Programming)AOP(Aspect Oriented Programming)面向方面编程实现面向方面编程实现 在执行Action的前后Structs2提供了大量拦截器来完成通用功能1/28/2023华南师范大学软件学院363、Struts补充:面向方面编程补充:面向方面编程AOPAOPpOOPOOP选择对象作为模块的主要单元,将对象与系统的所有行为联系起来对象成为问题领域和计算过程的主要元素问题:存在着许多横切关注点(如安全性检查、日志记录、异常处理等)实现代码和其他业务逻辑代码混杂在一起、降低了模块的可重用性 pAOPAOP简介(也叫面向切面编程)简介(也叫面
26、向切面编程)目标:对业务逻辑的各个部分进行隔离主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等主要意图:将日志记录等代码从业务逻辑代码中划分出来通过对这些行为的分离,将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。1/28/2023华南师范大学软件学院373、Struts补充:面向方面编程补充:面向方面编程AOPAOPpAOP AOP 与与OOPOOP抽象类 Dog 类Poodle 继承了 DogDogPoodleObedient Dog定义标识为 Obedient Dog的类继承不是所有的 Dogs 都很驯服如果要Obedient Dog 类继承
27、 Dog 类,那么 Poodle 放在这个层次结构中的哪个位置合适呢?继承?pObedientObedient看作一个方面应用到任何一类驯服的 Dog我们反对以不恰当的方式强制将该行为放在 Dog 层次结构中1/28/2023华南师范大学软件学院383、StrutsStruts2.xStruts2.x拦截器拦截器p拦截器拦截器(Interceptor(Interceptor)Struts2的核心组成部分例如文件的上传和下载、国际化、转换器和数据校验等,Struts2利用内建的拦截器完成Struts2文档中对拦截器的解释为:拦截器是动态拦截Action调用的对象;提供了一种机制,使开发者可以定义
28、一个特定的功能模块这个模块可以在Action执行之前或者之后运行也可以在一个Action执行之前阻止Action执行同时也提供了一种可以提取Action中可重用的部分的方式。拦截器是AOP 的一种实现,底层通过动态代理模式完成。1/28/2023华南师范大学软件学院393、StrutsStruts2.xStruts2.x拦截器拦截器pStruts2.xStruts2.x的拦截器的拦截器FilterDispatcherActionProxy类型转换拦截器文件上传拦截器等ActionResult初始化并调用execute方法拦截并处理用户请求,然后到Action的execute方法处理用户请求返回
29、逻辑视图,系统负责将逻辑视图对应的资源显示给用户1/28/2023华南师范大学软件学院403、StrutsStruts2.xStruts2.x实例实例pStruts2.xStruts2.x实例实例(实现用户登录操作(实现用户登录操作)导入Struts2类库(以为例)文件名说明struts2-core-2.1.6.jarStruts2框架的核心库xwork-2.1.2.jarXwork类库,Struts2在其上构建ognl-2.6.11.jar对象图导航语言,Struts2使用的一种表达式语言freemarker-2.3.13.jarStruts2的UI标签的模板使用FreeMarker编写co
30、mmons-logging-1.1.jar使用此名来支持Log4j和JDK1.4+的日志将其WEB-INF/lib目录中的JAR拷贝到Project的WEB-INF/lib目录下)1/28/2023华南师范大学软件学院413、StrutsStruts2.xStruts2.x实例实例pStruts2.xStruts2.x实例实例(实现用户登录操作(实现用户登录操作)在web.xml文件中配置FilterDispatcherstruts2.0struts2.0/*1/28/2023华南师范大学软件学院423、StrutsStruts2.xStruts2.x实例实例pStruts2.xStruts2
31、.x实例实例(实现用户登录操作(实现用户登录操作)在开发ActionpublicclassLoginActionprivateStringname;privateStringpassword;publicStringexecute()throwsExceptionif(this.name.equals(“admin)&this.password.equals(“admin”)returnsuccess;elsereturnerror;setter/getter实现业务逻辑处理1/28/2023华南师范大学软件学院433、StrutsStruts2.xStruts2.x实例实例pStruts2.
32、xStruts2.x实例实例(实现用户登录操作(实现用户登录操作)配置struts.xml文件在WEB-INF/classes录下创建struts.xml文件/login_success.jsp/login_error.jsp对Action类进行配置编写相关JSP文件3、HibernateORMORM简介简介p对象关系映射(ObjectRelationalMapping,简称ORM)ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单说,是将对象和对象之间的关系对应的到数据库表和表之间的关系。p持久化和持久化层持久化,把内存中的数据保存到数据库(如关系数据库)或永久设备(如
33、、硬盘)中。持久化持久化数据库数据库存储设备存储设备数据数据对象对象内存内存装载装载持久化原理1/28/2023华南师范大学软件学院443、Hibernate持久化和持久化层持久化和持久化层p持久化和持久化层持久化层,专门负责持久化工作的逻辑层,由它统一与数据库层打交道接受客户端数据,提交业务层处理表示层表示层接受业务层处理结果,布局整理给客户端接受表示层数据,进行业务处理业务逻辑层业务逻辑层通过持久层取得数据,加工处理后送持久层处理最后处理结果返回表示层新增数据持久层持久层修改数据删除数据查找数据连接池管理事务管理缓存管理数据库数据库数据库层数据库层不难发现持久层封装了所有与数据库有关的操作
34、和细节1/28/2023华南师范大学软件学院453、Hibernate实体域模型与关系数据模型实体域模型与关系数据模型p实体域模型与关系数据模型实体域模型是对真实世界物质实体(如学生、老师、商品等)的抽象。关系数据模型则是对关系型数据库中关系数据(如表、视图等)的一种静态描述。1/28/2023华南师范大学软件学院46City.java字段名称字段名称数据类型数据类型描述描述cityidInt城市idprovinedidInt 省份idcitycodeVarchar(20)城市代号citynameVarchar(40)城市名称City的数据表实体域模型示面向对象的,而关系数据模型是面向关系型数
35、据库的。他们之间的数据交换需要一个映射过程(对象对象-关系映射关系映射)3、HibernateORMORM简介简介p如何进行对象关系数据库的匹配?1/28/2023华南师范大学软件学院47使用JDBC手工转换。使用ORM(对象关系映射)框架来解决,主流的ORM框架有Hibernate、iBATIS、OJB等。优点优点缺点缺点SQL/JDBC成熟,流行,使用DAO模式代码烦杂,可读性差,维护困难等EntityBeanCMP(EJB1.1之后),EJB3不可移植,依赖性强,不可序列化等JDO简单、透明、标准不够成熟ApacheOJB性能、稳定性文档资源太少,支持标准太多成负担iBATIS可以控制更
36、多的数据库细节持久层封装不够彻底Hibernate成熟、流行、功能强大。并逐渐发展成Java持久层事实上的标。不够透明3、Hibernate实体域模型与关系数据模型实体域模型与关系数据模型实体域对象City与关系数据表City之间可以通过Hibernate的映射文件进行映射。1/28/2023华南师范大学软件学院48Class元素定义了一个持久化类元素定义了一个持久化类Name指定一个类名,指定一个类名,table指定一个表名指定一个表名Id元素定义了属性到数元素定义了属性到数据库表主键字段的映射据库表主键字段的映射3、HibernateHibernateHibernate简介简介pHiber
37、nateHibernate简介简介1/28/2023华南师范大学软件学院49一个面向Java环境的对象/关系数据库映射工具;一个轻量级的ORM框架;用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去;独立的持久层框架,不与具体服务器相关;除提供对象关系映射,同时提供了数据查询和获取数据的方法。pHibernate Hibernate 的优缺点的优缺点:不需要编写的 SQL 语句移植性好实现了透明持久化代码测试方便 pHibernate Hibernate 使用使用范围:范围:针对单个对象进行修改编辑时,适用对象之间有着很清晰的关系,适用批量性添加、修改时,不适用要求使用数据库中特定
38、的功能时,不适用3、HibernateHibernateHibernate体系结构体系结构Hibernate作为模型层/数据访问层。它通过配置文件(或hibernate.properties)和映射文件(*.hbm.xml)把java对象或持久化对象(PersistentObject,PO)映射到数据库中的数据表,然后通过操作PO,对数据库中的表进行各种操作。1/28/2023华南师范大学软件学院50应用程序应用程序数据库数据库持久化对象持久化对象Hibernate配置:配置:如:或hibernate.propertiesHibernatel体系结构Hibernate映射映射:如:3、Hibe
39、rnateHibernateHibernate实例实例1/28/2023华南师范大学软件学院51pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERSCREATETABLEREGISTEDUSERS(USERIDINTNOTNULL,LOGINNAMECHAR(200)NOTNULL,PASSWORD1CHAR(100)NOTNULL);ALTERTABLEREGISTEDUSERSADD(PRIMARYKEY(USERID);3、H
40、ibernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院52pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 Userpackagecom.hibernatedemo;publicclassUserprivateintuserId;privateStringname;privateStringpassword;/对应getter和setter方法User.java3、Hi
41、bernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院53pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 User创建配置文件 User.hbm.xml映射的类映射的表映射字段3、HibernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院54pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用
42、拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 User创建配置文件 在Hibernate配置文件中增加映射内容 mysql jdbc:mysql:/localhost:3306/test root com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect true 数据库的连接数据库的连接URL,test是数据库名是数据库名数据库用户名数据库用户名数据库用户密码数据库用户密码配置数据库驱动程序配置数据库驱动程序类映射文件类映射文件hiber
43、nate.cfg.xml3、HibernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院55pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 User创建配置文件 在Hibernate配置文件中增加映射内容编写DAO接口和实现pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)IUserDAOUser validateUser(String
44、,String);UserDAOUser validateUser(String,String);UserDAO.java3、HibernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院56pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 User创建配置文件 在Hibernate配置文件中增加映射内容编写DAO接口和实现MySessionFactory.java3、Hib
45、ernateHibernateHibernate实例实例1/28/2023华南师范大学软件学院57pHibernateHibernate实例(实现用户登录操作)实例(实现用户登录操作)用拷贝支持lib和Hibernate应用包到Struts应用的WEB-INFlib目录下 创建数据库表 REGISTEDUSERS创建创建持久化类 User创建配置文件 在Hibernate配置文件中增加映射内容编写DAO接口和实现在Struts的ActionBean中访问DAO接口LoginAction.java1/28/2023华南师范大学软件学院581.读取并解析配置文件2.读取并解析映射信息,创建Sess
46、ionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory3、HibernateHibernateHibernate工作流程工作流程pHibernateHibernate工作流程工作流程3、HibernateHibernateHibernate工作流程工作流程1/28/2023华南师范大学软件学院59pHibernateHibernate工作流程工作流程启动hibernate构建configuration实例,初始化该实例中的所有变量加载文件至该实例(内存)通过文件中的mapping节点配置
47、加载*.hbm.xml至该实例(内存)利用configuration实例创建一个工厂类SessionFactory实例SessionFactory类创建连接SessionFactory实例创建事务接口通过session接口提供的各种方法操纵数据库提交数据库事务关闭sessionMySessionFactory.javaConfiguration cfg=new Configuration();hibernate.cfg.xmlMySessionFactory.javasessionFactory=cfg.buildSessionFactory();MySessionFactory.javase
48、ssionFactory.openSession();UserDAO.javaquery=session.createQuery(sql);3、SpringSpringSpring简介简介1/28/2023华南师范大学软件学院60pSpring为企业应用的开发提供了一个轻量级的解决方案目标:使现有技术更加易用,推进编码最佳实践内容:依赖注入,AOP实现(声明式事务),DAO/ORM支持,Web集成等p框架的主要优势之一就是其分层架构由7个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。SpringAOPSpring ORMSpring DA
49、OSpring webSpring contextSpring Web MVCSpring coreSpring框架的7个模块3、SpringSpringSpring框架框架1/28/2023华南师范大学软件学院61SpringAOPSpring ORMSpring DAOSpring webSpring contextSpring Web MVCSpring core提供提供 Spring Spring 框架的基本功能框架的基本功能主要组件是主要组件是 BeanFactoryBeanFactory,它是工厂模式的实现,它是工厂模式的实现一个配置文件一个配置文件向向 Spring Spring
50、 框架提供上下框架提供上下文信息文信息提供了有意义的异常层提供了有意义的异常层次结构次结构可用该结构来管理异常可用该结构来管理异常处理和不同数据库供应处理和不同数据库供应商抛出的错误消息商抛出的错误消息通过配置管通过配置管理特性理特性集成了面向集成了面向方面的编程方面的编程功能功能提供了提供了 ORM ORM 的对象的对象关系工具关系工具为基于为基于 Web Web 的应用的应用程序提供了上下文程序提供了上下文全功能的构建全功能的构建WebWeb应用程序应用程序的的MVCMVC实现实现Spring框架3、Spring工厂模式工厂模式&单例模式单例模式1/28/2023华南师范大学软件学院62p