




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate实验二实验内容:1. 双向多对多关联映射2. Hibernate检索方式实验目的:1. 掌握多对多关联关系的配置2. 掌握cascade、inverse属性的使用3. 掌握HQL查询的使用步骤4. 掌握QBC查询的使用步骤一、 双向多对多关联映射以学生课程表为例,一个学生可以选修多门课程,一门课程也可以被多位学生选修。1. 建立数据库表学生表:create table student( sid int not null auto_increment primary key, sname varchar ( 16 ), sage varchar ( 16 );课程表:create table course( cid int not null auto_increment primary key, cname varchar ( 16 );关联表:create table student_course_link( sid int not null, cid int not null, primary key (sid,cid), foreign key (sid) references student (sid), foreign key (cid) references course (cid);2. 创建Java项目mtm,并添加Hibernate包创建many.to.many.bean包,产生的实体类和映射文件将放到此包下。3. 使用Hibernate逆向工程自动产生实体类和映射文件利用上次实验的方法,找到数据库下的表。使用Hibernate逆向工程产生实体类和映射文件。请选择“many-to-many”。选择双向多对多,出现三个表。产生的实体类和映射文件如下:学生类:public class Student implements java.io.Serializable / Fieldsprivate Integer sid;private String sname;private String sage;private Set courses = new HashSet(0);/省略setter和getter课程类:public class Course implements java.io.Serializable / Fieldsprivate Integer cid;private String cname;private Set students = new HashSet(0);/省略setter和getterStudent.hbm.xml映射文件 Course.hbm.xml映射文件 4. 编码测试,插入一组数据package many.to.many.test;import java.util.HashSet;import java.util.Set;import many.to.many.bean.Course;import many.to.many.bean.Student;import many.to.many.sf.HibernateSessionFactory;import org.hibernate.Session;import org.hibernate.Transaction;public class Test public static void main(String args) /学生对象Student s1=new Student();s1.setSname(Tom);s1.setSage(21);Student s2=new Student();s2.setSname(Jerry);s2.setSage(20);/课程对象Course c1=new Course();c1.setCname(C+);Course c2=new Course();c2.setCname(Java);Course c3=new Course();c3.setCname(C#);Set students=new HashSet();students.add(s1);students.add(s2);Set courses=new HashSet();courses.add(c1);courses.add(c2);courses.add(c3);/建立双向关联s1.setCourses(courses);s2.setCourses(courses);c1.setStudents(students);c2.setStudents(students);c3.setStudents(students);Session session=HibernateSessionFactory.getSession();Transaction tx=session.beginTransaction();/请将Student.hbm.xml中的set标签的cascade设置为true,这样保存Student对象的时候会级联保存Course,/否则在向关联表插入数据的时候,由于找不到参照的Course数据会报异常/Exception in thread main org.hibernate.TransientObjectException: /object references an unsaved transient instance /- save the transient instance before flushing: many.to.many.bean.Coursesession.save(s1);session.save(s2);mit();HibernateSessionFactory.closeSession();成功插入:二、 Hibernate检索在上面实验的数据基础之上,学习HQL与QBC检索的使用步骤。1.HQL:查询姓名以“T”开头的学生,所选择的课程package many.to.many.test;import java.util.Iterator;import java.util.List;import java.util.Set;import many.to.many.bean.Course;import many.to.many.bean.Student;import many.to.many.sf.HibernateSessionFactory;import org.hibernate.Query;import org.hibernate.Session;public class Test2 public static void main(String args) String queryString=from Student s where s.sname like T%;Session s=HibernateSessionFactory.getSession();Query q=s.createQuery(queryString);List l=q.list();Iterator i=l.iterator();while (i.hasNext() Student student = (Student) i.next();Set courses = student.getCourses();Iterator i2=courses.iterator();while (i2.hasNext() Course c = (Course) i2.next();System.out.println(student.getSname()+ +c.getCname();2.QBC:查询姓名以“T”开头的学生,所选择的课程package many.to.many.test;import java.util.Iterator;import java.util.List;import java.util.Set;import many.to.many.bean.Course;import many.to.many.bean.Student;import many.to.many.sf.HibernateSessionFactory;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.criterion.Restrictions;public class Test3 public static void main(String args) Session s=HibernateSessionFactory.getSession();Criteria criteria=s.createCriteria(Student.class);criteria.add(Restrictions.like(sname, T%);List l=criteria.list();Iterator i=l.iterator();while (i.hasNext() Stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级数学计算题专项练习1000题汇编
- 灌装机械知识培训课件
- 京东客服考试题及答案2025
- 今年地理考试题目及答案
- 难点解析-人教版八年级上册物理《机械运动》同步测试试题
- 考点解析-人教版九年级物理《电流和电路》专项训练练习题
- 护理题库问答题及答案解析
- 护理教育学第5版题库及答案解析
- 永城从业资格考试题及答案解析
- 港口拖车知识培训内容课件
- 电厂知识培训课件
- 溜井作业安全管理制度
- 评估所业务管理制度
- 2025年高速公路扩建施工合同
- 2025春季学期国开电大专科《管理学基础》一平台在线形考(形考任务一至四)试题及答案
- 医疗设备维护的智慧运营实践
- 2025-2030中国环丁砜行业市场现状分析及竞争格局与投资发展研究报告
- 一级注册消防工程师高频真题含答案2024
- DB65╱T 3953-2016 反恐怖防范设置规范 商业场所
- 整形医院前台接待标准化流程与话术设计
- GB 14930.2-2025食品安全国家标准消毒剂
评论
0/150
提交评论