一对多 单向

2014-11-24 00:07:56 · 作者: · 浏览: 0

  一对多 单向

  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的关系

  */