JAVAEE Hibernate关系映射实验剖析.docx
- 文档编号:4770823
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:15
- 大小:686.62KB
JAVAEE Hibernate关系映射实验剖析.docx
《JAVAEE Hibernate关系映射实验剖析.docx》由会员分享,可在线阅读,更多相关《JAVAEE Hibernate关系映射实验剖析.docx(15页珍藏版)》请在冰豆网上搜索。
JAVAEEHibernate关系映射实验剖析
实验六:
Hibernate关系映射
实验名称
Hibernate关系映射
实验步骤
一、一对一共享主键方式的关系映射
1.创建Javaproject,命名为lab6
2.建立数据库及表结构(特别注意:
在创建数据库时选择字符集,例如为gbk,校对规则为gbk_chinese_ci。
否则不能显示中文字符)
登录表:
login
列名
描述
数据类型
可空
默认值
说明
ID
ID号
int(4)
否
无
主键
USERNAME
登录账号
varchar(20)
是
无
PASSWORD
登录密码
varchar(20)
是
无
用户详细信息表:
detail
列名
描述
数据类型
可空
默认值
说明
ID
ID号
int(4)
否
无
主键,自增
TRUENAME
真实姓名
varchar(8)
是
无
电子邮件
varchar(50)
是
无
3.在MyEclipse中创建对MySQL的连接
1)切换到“MyEclipseDatabaseExplorer”视图,新建MySQL数据库连接驱动。
启动MyEclipse,选择【Window】→【OpenPerspective】→【MyEclipseDatabaseExplorer】菜单项,打开MyEclipseDatabase浏览器,右击菜单,如下图所示,选择【New…】菜单项,出现如图所示的对话框,编辑数据库连接驱动。
Drivertemplate:
MySQLConnector/J
Drivername:
com.mysql.jdbc.Driver
(在url中添加characterEncoding参数,否则在数据库中不能显示中文)
ConnectionURL:
jdbc:
mysql:
//localhost:
3306/javaee?
characterEncoding=gbk
注:
javaee要修改成你所使用的数据库名称
Username:
root
Password:
JDBC驱动存放位置:
c盘lib文件夹下
2)测试连接:
在MyEclipseDatabase浏览器中,右击刚才创建的MyConn数据库连接,选择“Openconnection…”菜单项,打开名为“MyConn”的数据连接,如图所示:
4.添加Hibernate开发能力
右击项目名lab6,选择【MyEclipse】→【AddHibernateCapabilites】菜单项,出现如下图所示的对话框,选择Hibernate框架应用版本及所需要的类库。
单击【Next】按钮,进入如下图所示界面。
创建Hibernate配置文件hibernate.cfg.xml,将该文件放在src文件夹下,后面会详细介绍该文件内容。
这里先说明添加Hibernate开发功能的步骤。
单击【Next】按钮,进入如下图所示界面,指定Hibernate数据库连接细节。
由于在前面已经配置一个名为MyConn的数据库连接,所以这里只需要选择DBDriver为“MyConn”即可。
单击【Next】按钮,出现如下图所示界面。
Hibernate中有一个与数据库打交道重要的类Session。
而这个类是由工厂SessionFactory创建的。
这个界面询问是否需要创建SessionFactory类。
如果需要创建,还需要指定创建的位置和类名。
这些接口都会在后面详细介绍。
单击【Finish】按钮,完成Hibernate的配置。
5.生成数据库表对应的Java类对象和映射文件
在MyEclispse下创建一个名为“org.model”的包,这个包将用来存放与数据库表对应的Java类POJO。
打开MyEclipseDatabaseExplorer视图。
打开前面创建的MyConn数据连接,选择【XSCJ】→【TABLE】菜单项,右击相应表(登录表和用户信息表),选择【HibernateReverseEngineering…】菜单项,如下图所示,将启动HibernateReverseEngineering向导,该向导用于完成从已有的数据库表生成对应的Java类和相关映像文件的配置工作。
首先,选择生成的Java类和映像文件所在的位置,如图所示。
单击【Next】按钮,进入如图所示的界面,选择主键生成策略。
下面列举需要修改的代码,修改后的代码如下。
Detail.java
packageorg.model;
publicclassDetail{
…
privateStringemail;
privateLoginlogin;
//省略getter和setter方法及构造函数(反向工程自动生成的构造函数必须有否则操作数据库会报错)
}
Login.java
packageorg.model;
publicclassLogin{
…
privateStringpassword;
privateDetaildetail;
//省略getter和setter方法及构造函数
}
Login.hbm.xml
……
--name指定POJO类,table指定对应数据库的表-->
--name指定主键,type指定主键类型--> --采用foreign标志生成器,直接采用外键的属性值--> Detail.hbm.xml …… --name指定POJO类,table指定对应数据库的表--> 注意: 检查一下在hibernate.cfg.xml文件中是否已加入配置映射文件的语句 6.测试类Test.java Test.java: //此处省略main方法 …… Sessionsession=HibernateSessionFactory.getSession(); Transactionts=session.beginTransaction();//创建事务对象 Detaildetail=newDetail(); Loginlogin=newLogin(); login.setUsername("yanhong"); login.setPassword("123"); detail.setTruename("严红"); detail.setEmail("yanhong@"); login.setDetail(detail); detail.setLogin(login); session.save(detail); mit(); HibernateSessionFactory.closeSession(); …… 二、多对多的关系映射 1.建立数据库及表结构 学生表: student 列名 描述 数据类型 可空 默认值 说明 ID ID号 int 否 无 主键 SNUMBER 学号 varchar(10) 是 无 SNAME 姓名 varchar(10) SAGE 年龄 int 是 无 课程表: course 列名 描述 数据类型 可空 默认值 说明 ID ID号 int 否 无 主键 CNUMBER 课程号 varchar(10) 是 无 CNAME 课程名 varchar(20) 是 无 学生选课表(连接表): stu_cour 列名 描述 数据类型 可空 默认值 说明 SID 学生ID号 int 否 无 主键 CID 课程ID号 int 否 无 主键 3.生成数据库表对应的Java类对象和映射文件 在MyEclispse下创建一个名为“org.model”的包,这个包将用来存放与数据库表对应的Java类POJO。 打开MyEclipseDatabaseExplorer视图。 打开前面创建的MyConn数据连接,选择【XSCJ】→【TABLE】菜单项,右击相应表(学生表和课程信息表),选择【HibernateReverseEngineering…】菜单项,如下图所示,将启动HibernateReverseEngineering向导,该向导用于完成从已有的数据库表生成对应的Java类和相关映像文件的配置工作。 首先,选择生成的Java类和映像文件所在的位置,如图所示。 单击【Next】按钮,进入如图所示的界面,选择主键生成策略。 下面列举需要修改的代码,修改后的代码如下。 Student.java packageorg.model; importjava.util.HashSet; importjava.util.Set; publicclassStudentimplementsjava.io.Serializable{ … privateintsage; privateSetcourses=newHashSet(); //省略上述各属性的getter和setter方法及构造函数(反向工程自动生成的构造函数必须有否则操作数据库会报错) } Course.java packageorg.model; importjava.util.HashSet; importjava.util.Set; publicclassCourseimplementsjava.io.Serializable{ … privateStringcname; privateSetstus=newHashSet(); //省略上述各属性的getter和setter方法 } Student.hbm.xml …… …… Course.hbm.xml …… …… 注意: 检查一下在hibernate.cfg.xml文件中是否已加入配置映射文件的语句 6.测试类Test.java Test.java: //此处省略main方法 …… Sessionsession=HibernateSessionFactory.getSession(); Transactionts=session.beginTransaction();//创建事务对象 Coursecour1=newCourse(); Coursecour2=newCourse(); Coursecour3=newCourse(); cour1.setCnumber("101"); cour1.setCname("计算机基础"); cour2.setCnumber("102"); cour2.setCname("数据库原理"); cour3.setCnumber("103"); cour3.setCname("计算机原理"); Setcourses=newHashSet(); courses.add(cour1); courses.add(cour2); courses.add(cour3); Studentstu=newStudent(); stu.setSnumber("081101"); stu.setSname("李方方"); stu.setSage(21); stu.setCourses(courses); session.save(stu); mit(); HibernateSessionFactory.closeSession(); …… 三、扩展实验: 自己完成多对一单向关联和一对多双向关联。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA EE Hibernate关系映射实验剖析 Hibernate 关系 映射 实验 剖析
![提示](https://static.bdocx.com/images/bang_tan.gif)