JAVAEE Hibernate关系映射实验剖析.docx

上传人:b****6 文档编号:4770823 上传时间:2022-12-08 格式:DOCX 页数:15 大小:686.62KB
下载 相关 举报
JAVAEE Hibernate关系映射实验剖析.docx_第1页
第1页 / 共15页
JAVAEE Hibernate关系映射实验剖析.docx_第2页
第2页 / 共15页
JAVAEE Hibernate关系映射实验剖析.docx_第3页
第3页 / 共15页
JAVAEE Hibernate关系映射实验剖析.docx_第4页
第4页 / 共15页
JAVAEE Hibernate关系映射实验剖析.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

JAVAEE Hibernate关系映射实验剖析.docx

《JAVAEE Hibernate关系映射实验剖析.docx》由会员分享,可在线阅读,更多相关《JAVAEE Hibernate关系映射实验剖析.docx(15页珍藏版)》请在冰豆网上搜索。

JAVAEE Hibernate关系映射实验剖析.docx

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)

 

EMAIL

电子邮件

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

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();

……

三、扩展实验:

自己完成多对一单向关联和一对多双向关联。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1