一对多 单向
class类对应的映射文件
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
然为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的关系
*/