




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate(冬眠)Hibernate的价值在于,对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。Hibernate 是一个优秀的Java持久层解决方案,是当今主流的对象关系映射工具什么是持久解决方案,什么又是对象关系映射?程序在运行的时候,有些数据保存在内存中,当程序退出后,这些数据就不复存在了,我们称这些数据的状态为瞬时(Transient)的。有些数据,在程序退出后,还以文件的形式保存在存储设备中,我们称这些数据的状态是持久的(Persistent)持久化是将程序中的数据在瞬时状态和持久状态间转换的机制。在三层架构中DAO层(数据访问层)有时候也称为持久化层,这一层承担的主要工作就是将数据保存到数据库中或把数据从数据库中读取出来。我们持久化的工作主要在O(Object,对象)和R(Relation Database,关系型数据)之间完成。我们在编写程序的时候,以面向对象的方式处理数据;保存数据的时候,却以关系型数据库的方式存储,所以,客观上我们需要一种能在两者间进行转换的机制,这样的机制称为对象关系映射机制(O/R Mapping,ORM),这个机制保存对象和关系数据库表的映射信息,当数据在对象和关系数据库中转化的时候,协助正确地完成转换综上所述,Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他能很大程度的简化DAO层的编码工作Hibernate执行持久化操作的步骤步骤操作代码与JDBC类比1读取并解析配置文件Configuration conf = new Configuration().configutration()相当于使用DataSource获取连接前读取DataSource的配置文件2读取并解析映射信息,创建SessionFactorySessionFactory sf = conf.buildSessionFactory();相当于创建DataSouce对象3打开SessionSession session = sf.openSession()相当于获得连接4开始一个事务(增删改必须,查询可选)Transaction tx = session.beginTransaction()开始事务5持久化操作Session.save(user);持久化操作6提交事务mit()提交事务7关闭SessionSession.close()关闭连接关联关系的映射配置1、 单向多对一关联的映射2、 单向一对多关联的映射3、 双向一对多关联的映射配置关联时,我们需要考虑两点:程序执行效率和实际业务的需求Hibernate查询支持两种主要的查询方式:HQL (Hibernate Query Languag,Hibernate查询语言)查询和Criteria查询。HQL是一种面向对象的查询语言,其中没有字段和表的概念,只有类、对象和属性的概念。Criteria查询又称为“对象查询”,他用面向对象的方式将构造查询的过程做了封装。HQL是Hibernate提供的一种面向对象的查询语言,使用HQL可以避免使用JDBC查询的一些弊端。首先,不需要编写繁复的SQL语句,我们将针对实体类及其属性进行查询,其次查询结果是直接放在List中的对象,不需要再次封装。如何使用HQL:(1) 得到Session;(2)编写HQL语句;(3)创建Query对象;(4)执行查询,得到结果Session session = this.getSession();/得到SessionString hql = “FROM TblFwxx”;/编写HQLQuery q = session.createQuery(hql);/创建Query对象List list = query.list();/执行查询,得到结果HQL支持的查询方式:1、 属性查询2、 参数查询、命名参数查询String hql = “FROM TblFwxx fw WHERE fw.zj:zj1 AND fw.zj0)c.add(Restrictions.in(“lx.lxid”),condition.getLxIds();c.addOrder(Order.asc(“fwid”);return c.list();综上可知:复杂查询使用Criteria将更方便。他采用面向对象的方式对查询条件的组装过程进行了封装。Restrictions提供了很多静态方法用于构造查询条件Struts(骨架、支柱)框架(Framework)是一个提供了可重用的公共结构的半成品框架的强大之处不是源自他能让你做什么,而是他不能让你做什么。因为框架使混乱的东西变得结构化。Struts是最早的Java开源框架之一,也是现在Java Web框架的事实标准。Struts是MVC设计模式一个优秀的实现。Struts定义了通用的Controller(控制器),通过配置文件(一般是struts-config.xml)隔离了Model(模型)和视图,以Action的概念对用户请求做了封装,使代码更清晰易读。Sturts还提供了自动将请求的数据填充到对象中以及页面标签简化编码的工具。为什么要使用StrutsJSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。Struts的目的也是提供一个实现MVC模式的应用程序骨架.基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件控制器组件包括ActionServlet,是Struts的核心控制器、还包括自定义的Action类,代表客户的一个操作,自定义的Action类继承自Struts提供的org.apache.struts.action.Action模型组件并不由Struts提供,一般由普通的接口和JavaBean充当,需要我们自己编写实现。视图组件一般由JSP实现,还包括自定义的ActionForm类。自定义的ActionForm类用于封装request中的数据,Struts可以将request中的数据自动填充到ActionForm中,以避免繁琐的request.getParameter()和类型转换代码,还提供了一系列自定义标签以简化页面的编码。Struts原理:ActionServlet是Struts最核心的组件。在Web容器启动的时候,ActionServlet被初始化,加载struts-config.xml配置文件。请求过程如下:(1) 当客户端浏览器发起请求到ActionServlet时,ActionServlet首先对请求进行一系列处理:根据请求的路径和配置信息找到对应的Action Bean 和Form Bean。当提交表单发送请求到服务器的时候,ActionServlet就会根据Struts配置信息查找和Path属性一样的Action Bean,找到后,并得知该Action的name属性,根据name属性找到对应的Form的实例(如果不存在则创建)(2) 在确定要调用的ActionBean和对应的Form Bean后,就将请求中包含的值填充到Form Bean中(Action可以不关联任何ActionForm,所以这一步是可选的)。在调用Action 的 execute方法前,ActionServlet还需要准备好ActionMapping参数,ActionMapping中包含了该Action的配置信息(3) 然后Struts将请求分发至相应的Action Bean处理,ActionMapping参数、ActionForm参数、request和response都作为参数传给处理请求的Action Bean的execute方法。(4) Action调用业务逻辑方法,得到返回值,并返回ActionForward对象。(5) 控制权重新回到ActionServlet,ActionServlet根据Action返回ActionForward对象转发到相应的JSP页面。(6) 处理结果返回给浏览器注意:(1)、ActionServlet将控制权转到页面的时候采用的是转发的方式(request.getRequestDispatcher(url).forward(request,response);)所有转发到页面的request和Action方法中的request是同一个请求,数据可以通过request对象的attribute属性传递。(2)、ActionForm 根据对应的Action的scope属性配置不同而生命周期有所不同。一般情况下,scope属性设为request,则每次请求开始时ActionServlet创建新的ActionForm对象,保存在request对象的attribute属性中,所以可以在Action代码中设置ActionForm的值,在页面中取出 (3)、当需要采取重定向的方式转到新的页面的时候,可以在Action代码中使用response.sendRedirect(url)语句,并放回null;什么是DispatchAction?通常,一个Action中只能完成一种业务操作,通过扩展org.apache.struts.actions.DispatchAction实现的Action类可以完成一组相关的几种业务操作1、配置动态Form(org.apache.struts.action.DynaActionForm)使用动态Form简化开发动态Form不需要再创建Form Bean 类,只需要在Struts配置文件中配置,即可得到Form Bean的定义。2、使用实体对象作为Form属性简化开发Spring(春天)容器管理对象依赖注入:(Dependency Injection DI)面向方面编程:(Aspectoriented programming AOP)Spring 的目标:使JavaEE更易用并促进好的编程习惯Struts是第一个开源的Java Web框架,给我们提供了优秀的MVC支持;Hibernate大大简化了持久化层的代码。Spring更大意义上充当了粘合剂和润滑剂的角色,他对Struts、Hibernate等技术都提供了良好的技术支持,能够把现有的Java系统柔顺的整合起来,并让他们更易用。同时他还提供了声明式事务等企业级开发不可或缺的功能。Spring的内容:其中最基础的是Spring Core,即Spring作为依赖注入容器的部分。Spring AOP是基于Spring Core的,典型的一个应用即声明式事务。Spring DAO对JDBC提供了支持,简化了JDBC的编码,同时使代码更健壮。Spring ORM 部分对Hibernate等OR映射框架提供了支持。Spring Context为企业级开发提供了便利和集成的工具。Spring Web是为Spring在Web应用程序中使用提供的支持。Spring提供了一个稍微简单的Spring Web MVC框架,但应用不多。依赖注入:就是明确的定义组件接口,独立开发各个组件,然后根据组件间的依赖关系组装运行的设计开发模式DI:编写程序时不用关心其依赖组件的实现AOP:将程序中涉及的公共问题集中处理一些通用的、散布在系统各处的需要在实现业务系统时关注的事情就成为“方面“,也称为”关注点“AOP要实现的事情:从系统中分离出方面,然后集中实现。从而可以独立编写业务逻辑和方面代码,在系统运行的时候再将方面代码“织入”到系统中方面代码在AOP中以通知的形式封装。通知分前置通知、后置通知、环绕通知和异常通知Spring 与 Hibernate 的整合:与JDBC中的配置相比,区别主要在于:1、 SessionFactory 的引入Hibernate中通过SessionFactory创建和维护Session。Spring对SessionFactory的配置进行了整合,无需通过Hibernate.cfg.xml对SessionFactory进行设定。SessionFactory节点的mappingResources属性包含了映射文件的路径,list节点下可配置多个映射文件。HibernateProperties节点则容纳了所有的属性配置2、 采用面向Hibernate的TransactionManager实现:org.springframework.orm.hibernate.HibernateTranascationManager.Spring可以采用Struts插件的方式与Struts轻松集成总结:至此:我们已经获得一个成熟的三层架构+MVC的框架了:Struts主持大局,Hibernate负责持久化工作,Spring管理组件间的依赖并提供事务主持。Web2.0的特点(1)、用户贡献内容(2)、内容聚合:RSS(3)、更丰富的用户体验,新的交互方式Ajax技术使我们可以通过JavaScript发送请求到服务器,并获得返回结果。这就让我们可以在必要的时候只更新页面的一小部分,而不用整个页面都涮新,这称为“无涮新“技术什么是Ajax?Asynchronous(异步的)JavaScirpt And Xml 。Ajax并不是一种全新的技术,而是整合了几种现有的技术:JavaScript、XML和CSS。主要是JavaScript,我们通过JavaScript的XMLHttpRequest对象完成发送请求到服务器并或得返回结果的任务,然后使用JavaScript更新局部的网页。异步指的是JavaScript脚本发送请求后并步是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年矿业工程技术人员职业资格考试试题及答案
- 2025年营养与食品卫生专业考研试卷及答案
- 2025年临床药学专业考试试题及答案
- 2025年建筑师职业资格考试试卷及答案解读
- 2025年技能提升培训认证考试试题及答案检索
- 网络游戏内容合规性保证与游戏运营管理协议
- 影视作品音乐版权电视剧背景音乐授权合同
- 云计算开源软件贡献者协议
- 税务师事务所与投资机构合作股权投资协议
- 智能化零售企业供应链金融风险防控合同
- 人工智能在水土保持中的应用
- 乡村振兴中的乡村安全与稳定维护
- 营销策划 -菌小宝益生菌2023品牌介绍手册
- 夫妻婚内房产赠与合同范本【专业版】
- 康复评定-常用康复评定项目课件
- 马克思主义基本原理智慧树知到课后章节答案2023年下湖南大学
- (完整版)数字信号处理教案(东南大学)
- 第三章-绿色植物与生物圈的水循环-课件
- 公园EPC建设项目合同管理的监理措施
- 保密警示教育课件
- 沪科版八年级全一册《空气的“力量”》教案及教学反思
评论
0/150
提交评论