框架技术入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1请复习Struts2框架技术知识!认真完成基于Struts2的项目!25.1Hibernate基础知识5.1.1Hibernate的发展与特点5.1.2Hibernate软件包的下载和配置5.1.3Hibernate的工作原理35.1.1Hibernate的发展与特点封装了JDBC的开源的对象/关系映射(ORM,Object-RelationMapping)框架,用OO思想操作数据库。将Java对象之间的关系映射到数据库表之间的关系。42001年,Hibernate1发布,即Hibernate的第一个版本;2003年,Hibernate2发布,成为JBoss公司的子项目;2005年,JBoss发布Hibernate3;2006年,JBoss公司被Redhat公司收购;2012年,发布Hibernate4.1.8。5作为数据访问层或持久层。开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装!重量级侵入性很强,依赖的东西也比较多,如ejb需要其他容器才能运行!65.1Hibernate基础知识5.1.1Hibernate的发展与特点5.1.2Hibernate软件包的下载和配置5.1.3Hibernate的工作原理71.软件包下载Hibernate先被JBoss公司收购,后来JBoss被Redhat收购,所以可在3个网站下载:,,。891011122.Hibernate4软件包中主要文件解压缩“hibernate-release-4.1.8.Final.zip”后,文件夹结构如图示。131)documentation:存放了Hibernate4的相关文档。2)lib:存放核心类库以及Hibernate4的第三方类库。required存放必须的核心类库。3)project:存放各种相关项目的源代码。143.Hibernate的配置lib文件夹有4个子目录,需要在类库中添加required和jpa下面的所有JAR文件。由于Hibernate各版本之间存在一些差异,可能导致项目无法运行。本书项目开发时使用Hibernate3.6.0。155.1.3Hibernate的工作原理161、Configuration读取配置和映射文件,即加载,2、生成多线程的SessionFactory对象;3、生成线程Session对象;4、Session生成Query对象或Transaction对象;5、Session对象的get,load,save,update,delete和saveOrUpdate方法操作PO。17第5章Hibernate框架技术入门5.1Hibernate基础知识5.2Hibernate的核心组件5.3基于Struts2+Hibernate的应用实例185.2Hibernate的核心组件核心类和接口即核心组件,是关键。除核心组件外还有:配置文件(hibernate.cfg.xml或hibernate.properties)、映射文件(xxx.hbm.xml)、持久化类(PO)。191.Configuration类配置并启动Hibernate,创建SessionFactory对象。定位映射文档位置、读取配置,创建SessionFactory对象。2.SessionFactory接口初始化Hibernate。数据源的代理,负责创建Session对象。用到工厂模式。SessionFactory不是轻量级的,操作多个数据库时,可以为每个数据库指定一个SessionFactory。203.Session接口负责执行被持久化对象的操作,有get,load,save,update和delete等方法用来对PO进行操作。注意Session对象是非线程安全的。Session一旦创建,如果当类变量使用,又供多个线程操作,不加排它锁,会出线程安全问题。214.Transaction接口负责事务相关的操作,用来管理Hibernate事务。主要方法有commit()和rollback(),可以使用Session的beginTransaction()方法生成。5.Query接口执行各种数据库查询。使用HQL语言对PO进行查询操作。使用Session的createQuery()方法生成。226.配置文件配置数据库连接参数,格式:hibernate.cfg.xml和hibernate.properties。前者可在mapping中定义映射文件,后者需以硬编码方式指明映射文件。7.映射文件(xxx.hbm.xml)把PO与数据库中的数据表、PO之间的关系与数据表之间的关系,以及PO的属性与表字段一一映射起来。238.持久化对象Hibernate对象的3种状态:1.Transient(自由状态)----VO实体对象和数据库记录无关联,只是一个普通的JavaBean。2.Persistent(持久状态)----PO实体对象和数据库记录有关联,其变更将由Hibernate固化到数据库中。Hibernate管理的状态。3.Detached(游离状态)----VOPersistent状态的对象,在对应的Session实例关闭后的状态。245.3基于Struts2+Hibernate的应用实例用Struts2.3.4和Hibernate3.6.0开发登录和注册项目。1)登录页面2)业务控制器为LoginAction,覆盖validate()方法。3)注册页面对应的业务控制器为RegisterAction,4)配置web.xml,5)struts.xml中配置Action,6)hibernate配置文件,7)hibernate映射文件,8)加载配置文件的类。2526视图组件(JSP页面)27284.编写业务控制器Action登录页面对应的业务控制器packageloginRegisterAction;importcom.opensymphony.xwork2.ActionSupport;importloginRegisterDao.LoginRegisterInfo;importPO.UserInfoPO;importjava.util.List;publicclassLoginActionextendsActionSupport{privateStringuserName;privateStringpassword;privateStringmessage=error;privateListlist;//setget方法29publicvoidvalidate(){if(this.getUserName()==null||this.getUserName().length()==0){addFieldError(userName,用户名不能为空!);}else{LoginRegisterInfoinfo=newLoginRegisterInfo();list=info.queryInfo(userName,this.getUserName());if(list.size()==0){addFieldError(userName,该用户尚未注册!);}else{UserInfoPOui=newUserInfoPO();intcount=0;for(inti=0;ilist.size();i++){count++;ui=(UserInfoPO)list.get(i);if(this.getUserName().equals(ui.getUserName())){if(ui.getPassword().equals(this.getPassword())){message=SUCCESS;}else{addFieldError(password,登录密码不正确!);}}}}}}30publicStringexecute()throwsException{returnmessage;}}31注册业务控制器(RegisterAction.java)packageloginRegisterAction;importPO.UserInfoPO;importcom.opensymphony.xwork2.ActionSupport;importloginRegisterDao.LoginRegisterInfo;importjava.util.List;publicclassRegisterActionextendsActionSupport{privateStringuserName;privateStringpassword1;privateStringpassword2;privateStringmess=error;privateListlist;//setget方法32publicvoidvalidate(){if(this.getUserName()==null||this.getUserName().length()==0){addFieldError(userName,用户名不能为空!);}else{LoginRegisterInfoinfo=newLoginRegisterInfo();list=info.queryInfo(userName,this.getUserName());UserInfoPOui=newUserInfoPO();for(inti=0;ilist.size();i++){ui=(UserInfoPO)list.get(i);if(ui.getUserName().equals(this.getUserName())){addFieldError(userName,用户名已存在!);}}}if(this.getPassword1()==null||this.getPassword1().length()==0){addFieldError(password1,登录密码不允许为空!);}elseif(this.getPassword2()==null||this.getPassword2().length()==0){addFieldError(password2,重复密码不允许为空!);}elseif(!this.getPassword1().equals(this.getPassword2())){addFieldError(password2,两次密码不一致!);}}33publicUserInfoPOuserInfo(){UserInfoPOinfo=newUserInfoPO();info.setUserName(this.getUserName());info.setPassword(this.getPassword1());returninfo;}publicStringexecute()throwsException{LoginRegisterInfolr=newLoginRegisterInfo();Stringri=lr.saveInfo(userInfo());if(ri.equals(success)){mess=success;}returnmess;}}345.修改struts.xml配置Action!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN=example.xml/packagename=defaultextends=struts-defaultactionname=registerclass=loginRegisterAction.RegisterActionresultname=success/login.jsp/result

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功