Hibernate (9)双向多对一cascade属性

来源:互联网 发布:阿里云客服投诉电话 编辑:程序博客网 时间:2024/06/06 13:46

进一步对上一节的代码进行优化

如下:

@Testpublic  void add() {Grade g = new Grade("Java一班", "Java一班软件开发");Student stu1 = new Student("小明", "男");Student stu2 = new Student("小芳", "女");//设置关联关系同时建立单向一对多和单向多对一//单向一对多g.getStudents().add(stu1);g.getStudents().add(stu2);//单向多对一stu1.setGrade(g);stu2.setGrade(g);session.save(g);session.save(stu1);session.save(stu2);}


上面的操作保存了班级之后,还要保存学生。

我们已经设置了关联关系,学生已经添加到班级中了,也就是说班级知道有哪些学生。那么在保存班级的时候不应该把班级的学生自动添加到数据库对应的学生表吗?


保存班级的时候理应发现班级中存在学生,并且数据库中没有对应的学生信息,这是保存班级的时候应该自动把它包含的学生保存到数据库。

这种操作称为级联.

如何进行配置呢?


如何设置才能在保存班级的时候自动保存学生呢?

设置Grade.hbm.xml



测试方法就可以这样写了(只需保存班级,不需要保存学生的操作了)如下

@Test
public  void add() {
Grade g = new Grade("Java一班", "Java一班软件开发");
Student stu1 = new Student("小明", "男");
Student stu2 = new Student("小芳", "女");
//设置关联关系同时建立单向一对多和单向多对一


//单向一对多
g.getStudents().add(stu1);
g.getStudents().add(stu2);
//单向多对一
stu1.setGrade(g);
stu2.setGrade(g);
session.save(g);
// session.save(stu1);
// session.save(stu2);
}


当然也可以进行反向操作,保存学生的时候自动保存班级:

同时,如果保存学生的时候,发现数据库中没有班级,自动添加班级到数据库


Student.hbm.xml添加


这样保存学生的时候如果数据库中没有对应的班级,就会自动添加班级到数据库了....



0 0