1、是PASSWORD登录密码用户详细信息表:detail主键,自增TRUENAME真实姓名varchar(8)EMAIL电子邮件varchar(50)3在MyEclipse中创建对MySQL的连接1)切换到“MyEclipse Database Explorer”视图,新建MySQL数据库连接驱动。启动MyEclipse,选择【Window】【Open Perspective】【MyEclipse Database Explorer】菜单项,打开MyEclipse Database浏览器,右击菜单,如下图所示,选择【New】菜单项,出现如图所示的对话框,编辑数据库连接驱动。Driver temp
2、late:MySQL Connector/JDriver name:com.mysql.jdbc.Driver(在url中添加characterEncoding参数,否则在数据库中不能显示中文)Connection URL:jdbc:mysql:/localhost:3306/javaee?characterEncoding=gbk注:javaee要修改成你所使用的数据库名称User name:rootPassword:JDBC驱动存放位置:c盘lib文件夹下2)测试连接:在MyEclipse Database浏览器中,右击刚才创建的MyConn数据库连接,选择“Open connection
3、”菜单项,打开名为“MyConn”的数据连接,如图所示: 4. 添加Hibernate开发能力右击项目名lab6,选择【MyEclipse】【Add Hibernate Capabilites】菜单项,出现如下图所示的对话框,选择Hibernate框架应用版本及所需要的类库。单击【Next】按钮,进入如下图所示界面。创建Hibernate配置文件hibernate.cfg.xml,将该文件放在src文件夹下,后面会详细介绍该文件内容。这里先说明添加Hibernate开发功能的步骤。单击【Next】按钮,进入如下图所示界面,指定Hibernate数据库连接细节。由于在前面已经配置一个名为MyCo
4、nn的数据库连接,所以这里只需要选择DB Driver为“MyConn”即可。单击【Next】按钮,出现如下图所示界面。Hibernate中有一个与数据库打交道重要的类Session。而这个类是由工厂SessionFactory创建的。这个界面询问是否需要创建SessionFactory类。如果需要创建,还需要指定创建的位置和类名。这些接口都会在后面详细介绍。单击【Finish】按钮,完成Hibernate的配置。5. 生成数据库表对应的Java类对象和映射文件在MyEclispse下创建一个名为“org.model”的包,这个包将用来存放与数据库表对应的Java类POJO。打开MyEclip
5、se Database Explorer视图。打开前面创建的MyConn数据连接,选择【XSCJ】【TABLE】菜单项,右击相应表(登录表和用户信息表),选择【Hibernate Reverse Engineering】菜单项,如下图所示,将启动Hibernate Reverse Engineering向导,该向导用于完成从已有的数据库表生成对应的Java类和相关映像文件的配置工作。首先,选择生成的Java类和映像文件所在的位置,如图所示。单击【Next】按钮,进入如图所示的界面,选择主键生成策略。下面列举需要修改的代码,修改后的代码如下。Detail.javapackage org.mode
6、l;public class Detail private String email; private Login login; / 省略getter和setter方法及构造函数(反向工程自动生成的构造函数必须有否则操作数据库会报错)Login.javapublic class Login private String password;private Detail detail; / 省略getter和setter方法及构造函数Login.hbm.xml!- name指定POJO类,table指定对应数据库的表 - id name=id type=java.lang.Integer- nam
7、e指定主键,type指定主键类型 -column name=ID length=4 /- 采用foreign标志生成器,直接采用外键的属性值- generator class=foreignparam name=propertydetail/generator/idproperty name=usernamejava.lang.StringUSERNAME/propertypasswordPASSWORDone-to-one name=detail class=org.model.Detail constrained=true/class/hibernate-mappingDetail.hbm
8、.xmlidentitytrueNameTRUENAMEemailEMAIL cascade=all lazy=false注意:检查一下在hibernate.cfg.xml文件中是否已加入配置映射文件的语句mapping resource=org/model/Detail.hbm.xmlorg/model/Login.hbm.xml6. 测试类Test.javaTest.java:/此处省略main方法Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction(); /
9、 创建事务对象Detail detail=new Detail();Login login=new Login();login.setUsername(yanhong);login.setPassword(123detail.setTruename(严红detail.setEmail(yanhonglogin.setDetail(detail);detail.setLogin(login);session.save(detail);mit();HibernateSessionFactory.closeSession();二、多对多的关系映射1.建立数据库及表结构学生表:studentintSN
10、UMBER学号varchar(10)SNAME姓名SAGE年龄课程表:courseID int CNUMBER 课程号varchar(10) CNAME 课程名varchar(20) 学生选课表(连接表):stu_courSID 学生ID号CID 课程ID号3生成数据库表对应的Java类对象和映射文件打开前面创建的MyConn数据连接,选择【XSCJ】【TABLE】菜单项,右击相应表(学生表和课程信息表),选择【Hibernate Reverse Engineering】菜单项,如下图所示,将启动Hibernate Reverse Engineering向导,该向导用于完成从已有的数据库表生成
11、对应的Java类和相关映像文件的配置工作。Student.javaimport java.util.HashSet;import java.util.Set;public class Student implements java.io.Serializable private int sage; private Set courses=new HashSet(); /省略上述各属性的getter和setter方法及构造函数(反向工程自动生成的构造函数必须有否则操作数据库会报错)Course.javapublic class Course implements java.io.Serializ
12、able private String cname; private Set stus=new HashSet(); /省略上述各属性的getter和setter方法Student.hbm.xmlset name=coursesstu_cour cascade=key column=SID/keymany-to-many class=org.model.Course column=CID/setCourse.hbm.xmlstus org.model.Studentorg/model/Course.hbm.xmlorg/model/Student.hbm.xmlCourse cour1=new
13、 Course();Course cour2=new Course();Course cour3=new Course();cour1.setCnumber(101cour1.setCname(计算机基础cour2.setCnumber(102cour2.setCname(数据库原理cour3.setCnumber(103cour3.setCname(计算机原理Set courses=new HashSet();courses.add(cour1);courses.add(cour2);courses.add(cour3);Student stu=new Student();stu.setSnumber(081101stu.setSname(李方方stu.setSage(21);stu.setCourses(courses);session.save(stu);三、扩展实验:自己完成多对一单向关联和一对多双向关联。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1