1. 多表操作—插入操作
@Test
public void test1() {
Session session = HibernateUtil.getSession();
session.beginTransaction();
//操作
//1.创建2个学生
Student s1 = new Student();
s1.setName("zhangsan");
Student s2 = new Student();
s2.setName("wangwu");
//2. 创建2门课
Course c1 = new Course();
c1.setCname("deep learning");
Course c2 = new Course();
c2.setCname("java ee");
//科目来关联学生
c1.getStudents().add(s1);
c1.getStudents().add(s2);
c2.getStudents().add(s1);
c2.getStudents().add(s2);
//保存
session.save(s1);
session.save(s2);
session.save(c1);
session.save(c2);
session.getTransaction().commit();
session.close();
}
2. 多表操作—删除操作
//删除中间表的数据,删除id=5这个人所选的id=6的课
@Test
public void test2() {
Session session = HibernateUtil.getSession();
session.beginTransaction();
//1. 获取id=3的学生
Student s = session.get(Student.class, 5);
//2。获取id=4的课
Course c = session.get(Course.class, 6);
//3.解除关系
// s.getCourses().remove(c);
c.getStudents().remove(s);
session.getTransaction().commit();
session.close();
}
3. 多表操作—更新操作
//更新中间表,修改id=5 选的id=5 这门课修改为id=6这个课
@Test
public void test3() {
Session session = HibernateUtil.getSession();
session.beginTransaction();
//1. 获取id=5的学生
Student s = session.get(Student.class, 5);
//2。获取id=5、6的课
Course c1 = session.get(Course.class, 5);//修改前的课
Course c2= session.get(Course.class, 6);//修改后的课
//3.解除关系
c1.getStudents().remove(s);
c2.getStudents().add(s);
session.getTransaction().commit();
session.close();
}