版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三Hibernate框架应用一、实验目的1、掌握采用Hibernate构建JavaWeb应用中持久化层的概念和思想2、掌握HibernateAPI的基本使用方法3、利用Hibernate实现用户信息的数据库基本操作(增、删、改、查)二、预备知识1.JDK的安装设置:JDK/JRE/JVM2.服务器Tomcat的使用3.集成开发环境Eclipse的使用4.HibernateAPI的基本使用方法5.数据库(MySQL/JDBC/JDBCAPI)技术基础知识6.XML技术基础知识(web.xml/hibernate.cfg.xml/xxx.hbm.xml)7.简单的错误调试三、实验内容
(1)按照以下步骤检查所使用的计算机系统:1.确认系统的环境变量,是否已安装JDK;2.确认目录C:\ProgramFiles\ApacheSoftwareFoundation,是否已安装Tomcat服务器;3.确认目录D:\eclipse3.3,是否已绿色安装Eclipse集成开发环境;4.确认Eclipse插件:HibernateSynchronizer是否已复制到Eclispe的plugins目录中。(2)创建数据表:1.安装MySQL2.在WindowsXP上启动:·安装MySQL服务:C:\ProgramFiles\MySQL\MySQLServer5.0\bin3.连接MySQLC:\mysql\bin>mysql–uroot-p会提示输入密码!此时输入安装MySQL时设置的密码即可。回车后,就会出现“mysql”提示符,表示连接成功。4.新建数据库mysql>createdatabasemydb;5.查看数据库mysql>showdatabases;6.打开数据库mysql>usemydbDatabasechanged7.创建数据表createtablet_user(idintprimarykey, usernamevarchar(20), passwordvarchar(20), ageint);8.退出实验截图mysql>quit;9.关闭MySQL服务C:\mysql\bin>netstopmysql(3)Eclipse集成开发环境的基本使用方法(详细步骤请参照实验一的实验指导书)1.创建一个新的DynamicWebProject:Hibernate_Proj2.以运行库为目标3.运行库配置4.选择是否想要转换到JavaEEPerspective。5.添加服务器
(4)向已建立的工程添加Hibernate应用1.设置Hibernate配置文件(hibernate.cfg.xml):选中Hibernate_Proj,然后右键选择Properties>new>others>Hibernate>HibernateConfigurationFile,创建hibernate.cfg.xml,具体内容如下(可参照教材第154页):Databasedialect:MySQLDriverclass:com.mysql.jdbc.DriverConnectionURL:jdbc:mysql://localhost:3306/mydbUsername:root2.生成持久化对象(POJO):·新建一个包:选中Hibernate_Proj,然后右键选择Properties>new>package,在包名中输入user,然后单击“完成”按钮;·生成持久化对象(POJO):引入类User.java;User.javapackageuser;publicclassUser{ privateintid; privateStringusername; privateStringpassword; privateintage; publicUser(){ } publicintgetId(){ returnid; } publicStringgetPassword(){ returnpassword; } publicStringgetUsername(){ returnusername; } publicintgetAge(){ returnage; } publicvoidsetId(intid){ this.id=id; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicvoidsetUsername(Stringusername){ this.username=username; } publicvoidsetAge(intage){ this.age=age; }}3.生成映射文件(User.hbm.xml):在新建的包user上右键选择new>others>Hibernate>HibernateMappingFile,创建User.hbm.xml,具体内容请参照教材第156页;User.hbm.xml<?xmlversion="1.0"?><!DOCTYPEhibernate-mappingPUBLIC "-//Hibernate/HibernateMappingDTD//EN" "/hibernate-mapping-3.0.dtd"><hibernate-mappingpackage="user"> <class name="user.User" table="t_user" > <metaattribute="sync-DAO">false</meta> <id name="Id" type="int" column="id" > <generatorclass="increment"/> </id> <property name="username" column="username" type="string" not-null="false" length="20" /> <property name="password" column="password" type="string" not-null="false" length="20" /> <property name="age" column="age" type="integer" not-null="false" length="11" /> </class> </hibernate-mapping>4.修改Hibernate配置文件(hibernate.cfg.xml):把映射文件(User.hbm.xml)添加到配置文件中;5.在包user下面添加类userServlet.java,该类通过HibernateAPI对User对象进行持久化的操作;userServlet.javapackageuser;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjava.util.*;importorg.hibernate.*;importorg.hibernate.cfg.Configuration;publicclassuserServletextendsHttpServlet{ privatestaticfinallongserialVersionUID=1L; privatestaticfinalStringCONTENT_TYPE="text/html;charset=GB2312"; privatestaticfinalSessionFactorysessionFactory; static{ try{ //CreatetheSessionFactory Configurationconfig=newConfiguration(); sessionFactory=config.configure().buildSessionFactory(); }catch(RuntimeExceptionex){ ex.printStackTrace(); throwex; } } //Initializeglobalvariables publicvoidinit()throwsServletException{ } //ProcesstheHTTPGetrequest publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringusername=request.getParameter("username"); if(username==null){ username=""; } Stringpassword=request.getParameter("password"); if(password==null){ password=""; } Stringage1=request.getParameter("age"); if(age1==null){ age1="0"; } Stringaction=request.getParameter("action"); System.out.println("action="+action); if(action==null){ action=""; } System.out.println(action); intage=Integer.parseInt(age1); response.setContentType(CONTENT_TYPE); PrintWriterout=response.getWriter(); //生成User实例 Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setAge(age); if(action.equals("save")){ //生成Session实例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); //保存持久类对象 session.save(user); //提交到数据库 mit(); //跳转到回复页面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } if(action.equals("update")){ //生成Session实例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromUseruwhereu.username=?"); query.setString(0,username); Listlist=query.list(); for(inti=0;i<list.size();i++){ Useru=(User)list.get(i); Useru1=(User)session.get(User.class,newInteger(u.getId())); u1.setPassword(password); u1.setAge(age); session.update(u1); } //提交到数据库 mit(); //跳转到回复页面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{session.close(); } } if(action.equals("delete")){ //生成Session实例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromUseruwhereu.username=?"); query.setString(0,username); Listlist=query.list(); for(inti=0;i<list.size();i++){ Useru=(User)list.get(i); Useru1=(User)session.get(User.class,newInteger(u.getId())); session.delete(u1); } //提交到数据库 mit(); //跳转到回复页面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } } //ProcesstheHTTPPostrequest publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); } //Cleanupresources publicvoiddestroy(){ }6.构建视图组件:user.jsp和reply.jsp:user.jsp:用户信息输入画面;User.jsp<%@pagelanguage="java"contentType="text/html;charset=GB18030"pageEncoding="GB18030"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GB18030"><title>user</title></head><bodybgcolor="#ffffff"><formaction="userservlet"method="post">用户名:<inputtype="text"name="username"/><br><br>密码:<inputtype="password"name="password"/><br><br>年龄:<inputtype="text"name="age"/><br><br><inputtype="Submit"name="action"value="save"/><inputtype="Submit"name="action"value="update"/><inputtype="Submit"name="a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSPSTC 166-2025洪涝灾害空天地一体化监测数据采集技术指南
- T/ZAWS 005-2024燃煤耦合污泥发电安全管理要求
- T/HAEPCI 63-2024尾砂环保涂料应用技术规范
- T/CIE 257-2024大模型系统质量要求 第1部分:文本类型
- T/CAOE 72-2023海滩养护拦沙堤设计技术导则
- T/CSAE 469-2025乘用车线控转向手感模拟单元技术规范
- 2025~2026学年广东某校连州市北师大版下册期末素养检测三年级数学【附答案】
- 2025-2026学年宁夏回族自治区石嘴山市初中生物八年级期末下册高分预测重点黑金模拟题附答案
- PHP 基础知识测试题(含详细答案)
- 2026年康复治疗师理论真题卷及答案
- 2026年新教材人教版九年级上册英语期中素养综合评价测试卷(含答案)
- 中国老年人睡眠管理新范式专家共识(2026 版)
- 2026年轮胎制造行业市场现状分析报告及未来五至十年碳中和与循环经济
- 2026年托业(TOEIC)全真试题及详细答案解析
- 2026年度江西省党史知识竞赛考试复习重点试题(含答案)
- 2026年贵州选调生面试题和参考答案
- 《中小型无人机抗风性试验实施规范》
- 游乐场客群细分研究-洞察与解读
- 智能数控技术介绍
- 急性心房颤动急诊管理指南总结2026
- 2025年浙江出版联合集团招聘35人笔试参考题库附带答案
评论
0/150
提交评论