实验五HibernateSpring及SSH集成汇编.docx
《实验五HibernateSpring及SSH集成汇编.docx》由会员分享,可在线阅读,更多相关《实验五HibernateSpring及SSH集成汇编.docx(29页珍藏版)》请在冰豆网上搜索。
实验五HibernateSpring及SSH集成汇编
实验五Hibernate、Spring及SSH集成
实验内容
学习Hibernate、Spring应用的基本开发,及SSH的简单集成
实验目的
了解Hibernate、Spring框架的机制
掌握Hibernate、Spring应用的配置
掌握Spring中Bean注解扫描装配
掌握Hibernate基本编程
掌握SSH的简单集成
环境要求
服务器:
Tomcat6.0或更高,jboss6或更高
集成开发环境:
MyEclipse8.6或更高
实验指导
1.Hibernate简单使用
1)创建表
在MySQL数据库服务器上的test中创建student表,字段如下:
字段名
类型
说明
id
Integer
自增,主键
xh
varchar(10)
name
varchar(10)
sex
varchar
(2)
className
varchar(16)
2)创建数据库连接
通过菜单“window”->“showview”打开“DBBrowser”窗口,在该窗口中点击右键,在弹出菜单总选择“New”,打开如下窗口。
在“Drivertemplate”中选择“MySQL”,“Drivername”中输入一个名称(mysql),修改“ConnectionURL”为:
jdbc:
mysql:
//localhost:
3306/test?
characterEncoding=UTF-8,输入数据库的用户名和口令,点击“AddJARS”按钮添加Mysql的驱动Jar包,点击“Finish”按钮完成创建。
3)创建工程及添加Hiberbate支持
创建一个Java工程,名称为hh。
在左侧“packageexplore”窗口的“hh”工程名上点击右键,在弹出的菜单中选择“MyEclipse”->“AddHibernateCapapilities...”,弹出如下对话框:
在本对话框中选择我们需要的Hibernate的Jar包,使用默认选择即可,点击“Next”按钮,弹出如下窗口:
在本对话框中用于指定Hibernate的配置文件的位置及名称,使用默认即可。
点击“Next”按钮弹出如下窗口:
本窗口用于选择设置在Hibernate中使用数据库的信息,在“DBDriver”中选择我们在第二步创建的数据库连接,点击“Next”按钮,弹出如下对话框:
本对话框用于设置是否通过向导来产生Hibernate的会话工厂,取消“CreateSessionFactoryclass”的选择,点击“Finish”按钮即可完成工程对Hibernate的支持。
4)编写代码
①实体——student.java
packageentity;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
@Entity
publicclassStudent{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateintid;
privateStringxh;
privateStringname;
privateStringclassName;
privateStringsex;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetXh(){
returnxh;
}
publicvoidsetXh(Stringxh){
this.xh=xh;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetClassName(){
returnclassName;
}
publicvoidsetClassName(StringclassName){
this.className=className;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
@Override
publicStringtoString(){
return"学号:
"+xh+"\t"
+"姓名:
"+name+"\t"
+"性别:
"+sex+"\t"
+"班级:
"+className+"\t";
}
}
②Hibernate配置文件——hibernate.cfg.xml
xmlversion='1.0'encoding='UTF-8'?
>
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN""
--配置数据库-->
org.hibernate.dialect.MySQLDialect
jdbc:
mysql:
//localhost:
3306/test?
characterEncoding=UTF-8
root
com.mysql.jdbc.Driver
mysql
--注册实体-->
③测试代码:
importjava.io.UnsupportedEncodingException;
importjava.util.List;
importjava.util.Scanner;
importorg.hibernate.Query;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.AnnotationConfiguration;
importorg.hibernate.classic.Session;
importentity.Student;
publicclassHa{
/**
*@paramargs
*@throwsUnsupportedEncodingException
*/
publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{
Hah=newHa();
Scannersc=newScanner(System.in);
while(true){
switch(h.menu(sc)){
case1:
h.list();
break;
case2:
Studentstu=newStudent();
stu.setXh(sc.next());
stu.setName(sc.next());
byte[]b=stu.getName().getBytes("utf-8");
stu.setName(newString(b,"utf-8"));
stu.setSex(sc.next());
stu.setClassName(sc.next());
h.add(stu);
h.list();
break;
case3:
h.edit(sc.nextInt(),sc);
break;
case4:
intid=sc.nextInt();
h.deleteByKey(id);
h.list();
break;
case5:
System.exit(0);
break;
default:
break;
}
}
}
privateSessionFactorysf;
publicHa(){
AnnotationConfigurationconfig=newAnnotationConfiguration().configure("/hibernate.cfg.xml");
sf=config.buildSessionFactory();
}
privateintmenu(Scannersc){
System.out.println("1.list");
System.out.println("2.add");
System.out.println("3.edit");
System.out.println("4.delete");
System.out.println("5.exit");
returnsc.nextInt();
}
/**
*学生信息列表
*/
privatevoidlist(){
Sessionsession=sf.openSession();
Queryqry=session.createQuery("fromStudent");
Liststus=qry.list();
for(Studentstu:
stus){
System.out.println(stu);
}
session.close();
}
/**
*添加学生信息
*@paramstu
*/
privatevoidadd(Studentstu){
Sessionsession=sf.openSession();
session.beginTransaction();
session.save(stu);
session.getTransaction().commit();
session.close();
}
privatevoidedit(intid,Scannersc){
Sessionsession=sf.openSession();
Studentstu=(Student)session.get(Student.class,id);
System.out.println(stu);
stu.setXh(sc.next());
stu.setName(sc.next());
stu.setSex(sc.next());
stu.setClassName(sc.next());
session.beginTransaction();
session.update(stu);
session.getTransaction().commit();
session.close();
}
/**
*按主键删除
*@paramid
*/
privatevoiddeleteByKey(intid){
Sessionsession=sf.openSession();
Studentstu=(Student)session.get(Student.class,id);
session.beginTransaction();
session.delete(stu);
session.getTransaction().commit();
session.close();
}
}
2.SSH集成实例
功能:
学生信息管理系统
表同第1题。
(1)创建一个Web工程struts1。
(2)Struts集成
在工程名上点击右键,在弹出菜单中选择“MyEclipse”->“AddStrutscapabilities...”,弹出的对话框中选择如下图:
点击“Next”按钮,在对话框中的列表中选择如下内:
点击“finish”按钮。
(3)Spring集成
再在工程名上点击右键,在弹出对话框中选择“MyEclipse”->“AddSpringcapabilities...”,在弹出对话框中选择如下:
在下一个对话框中,设置如下(使用默认值即可):
点击“Finish”按钮。
打开web.xml在标记之前添加如下内容,使Spring生效。
contextConfigLocation
classpath:
applicationContext.xml
--对Spring容器进行实例化-->
org.springframework.web.context.ContextLoaderListener
(4)Hibernate集成
再在工程名上点击右键,在弹出对话框中选择“MyEclipse”->“AddHibernatecapabilities...”,在弹出对话框中选择如下:
在下一个窗口中选择如下;
在下一个窗口中选择如下:
在下一窗口中选择自己的数据库,如图:
在下一窗口中,取消“CreateSessionFactoryclass?
”的选择,点击“Finish”按钮,如图:
最终自动生成的Spring的配置文件——applicationContext.xml,内容为:
xmlns="http:
//www.springframework.org/schema/beans"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xmlns:
p="http:
//www.springframework.org/schema/p"
xsi:
schemaLocation="http:
//www.springframework.org/schema/beanshttp:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd">
--数据库设置-->
class="mons.dbcp.BasicDataSource">
value="com.mysql.jdbc.Driver">
mysql:
//localhost:
3306/test">
--管理Hibernate的会话工厂(基于注解)-->
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
org.hibernate.dialect.MySQLDialect
(5)创建包:
com.entity:
实体包,存放Hibernate的实体类;
com.model.action:
Action包,存放Struts的Action
com.model.dao:
Dao包,存放持久化类(数据库操作);
com.model.service:
服务包,存放service类,此包中的类一般都是将相关的业务处理封装到一个类中,供action调用,该类中再调用Dao类完成具体的操作。
(6)修改Spring配置,让Spring对指定对象进行管理。
最后的配置文件内容如下:
xmlns="http:
//www.springframework.org/schema/beans"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xmlns:
p="http:
//www.springframework.org/schema/p"
xmlns:
context="http:
//www.springframework.org/schema/context"
xsi:
schemaLocation="
http:
//www.springframework.org/schema/context
http:
//www.springframework.org/schema/context/spring-context-3.1.xsd
http:
//www.springframework.org/schema/beanshttp:
//www.springframework.org/schema/beans/spring-beans-3.1.xsd">
--开启Spring自动扫描,对指定包中的类进行自动装配-->
component-scanbase-package="com.model"/>
class="mons.dbcp.BasicDataSource">
mysql:
//localhost:
3306/test?
characterEncoding=UTF-8"/>
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
org.hibernate.dialect.MySQLDialect
true
--开启Hibernate实体类扫描-->
com.entity
(7)相关代码:
Student.java
packagecom.entity;
@Entity//实体注解
publicclassStudent{
@Id//主键注解
@GeneratedValue(strategy=GenerationType.IDENTITY)//主键生成策略
privateintid;
privateStringxh;
privateStringname;
privateStringclassName;
privateStringsex;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetXh(){
returnxh;
}