一对多 单向

本文通过JUnit测试案例,展示了如何使用Java ORM框架(如Hibernate)进行数据库操作,包括单向一对多关系的映射、批量保存学生与班级等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  一对多 单向

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

  */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值