一对多 单向
class类对应的映射文件
对应类:

一对多关系的各种情况
/**
* 保存学生这个操作只能插入一student对象,但是在student表中,外键任然为null
*/
@Test
public void testSaveStudent(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Student student = new Student();
student.setSname(班长);
student.setDescription(有班秘);
session.save(student);
transaction.commit();
session.close();
}
/**
* 保存班级的时候同时保存学生
*/
@Test
public void testSaveClassAndStudent(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Student student = new Student();
student.setSname(班秘);
student.setDescription(女士优先);
session.save(student);
Classes classes = new Classes();
classes.setCname(精品班);
classes.setDescription(还是极品好);
session.save(classes);
transaction.commit();
session.close();
}
/**
* 在保存班级的同时,级联保存学生
* Hibernate: select max(cid) from Classes
Hibernate: select max(sid) from Student
Hibernate: insert into Classes (cname, description, cid) values ( , , )
Hibernate: insert into Student (sname, description, sid) values ( , , )
Hibernate: update Student set cid= where sid=
*/
@Test
public void testSaveClass_Cascade_Student(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Student student = new Student();
student.setSname(班秘);
student.setDescription(女士优先);
Set
students = new HashSet
(); students.add(student); Classes classes = new Classes(); classes.setCname(cc班); classes.setDescription(好); classes.setStudents(students); session.save(classes); transaction.commit(); session.close(); } /** * 保存班级的时候同时保存学生,并且建立班级和学生之间的关系 * 在classes.hbm.xml文件中 *
* inverse的值为默认或者false,才能让classes维护student的关系 */ @Test public void testSaveClassesAndStudent_R(){ Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Student student = new Student(); student.setSname(班秘); student.setDescription(男女不限); Set
students = new HashSet
(); students.add(student); Classes classes = new Classes(); classes.setCname(aa班); classes.setDescription(好); classes.setStudents(students); session.save(classes); transaction.commit(); session.close(); } /** * 已经存在一个班级,新建一个学生,并且建立该学生和该班级之间的关系 * Hibernate: select classes0_.cid as cid0_0_, classes0_.cname as cname0_0_, classes0_.description as descript3_0_0_ from Classes classes0_ where classes0_.cid= Hibernate: select students0_.cid as cid0_1_, students0_.sid as sid1_, students0_.sid as sid1_0_, students0_.sname as sname1_0_, students0_.description as descript3_1_0_ from Student students0_ where students0_.cid= classes.getStudents()的时候发出的 Hibernate: select max(sid) from Student Hibernate: insert into Student (sname, description, sid) values ( , , ) Hibernate: update Student set cid= where sid= 建立关系 */ @Test public void testSaveStudent_R(){ /** * 1、查询班级 * 2、新建学生 * 3、建立关系 */ Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Student student = new Student(); student.setSname(习平); student.setDescription(昨天正式宣布); Classes classes = (Classes)session.get(Classes.class, 1L); //建立班级和学生之间的关系 classes.getStudents().a