From a0f5688b589027005c5bfab0bdafb916bc0382bf Mon Sep 17 00:00:00 2001 From: Cheng Date: Sun, 5 Aug 2018 18:45:24 +0800 Subject: [PATCH] evolve(hibernate): @ManyToMany create demo --- .../demo/CreateCourseAndStudentsDemo.java | 71 +++++++++++++++++++ .../hibernate/demo/entity/Course.java | 4 +- .../hibernate/demo/entity/Student.java | 4 +- 3 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 hb-05-many-to-many/src/com/luv2code/hibernate/demo/CreateCourseAndStudentsDemo.java diff --git a/hb-05-many-to-many/src/com/luv2code/hibernate/demo/CreateCourseAndStudentsDemo.java b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/CreateCourseAndStudentsDemo.java new file mode 100644 index 0000000..5e0bcdc --- /dev/null +++ b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/CreateCourseAndStudentsDemo.java @@ -0,0 +1,71 @@ +package com.luv2code.hibernate.demo; + +import com.luv2code.hibernate.demo.entity.*; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +public class CreateCourseAndStudentsDemo { + + public static void main(String[] args) { + + // create session factory + SessionFactory factory = new Configuration() + .configure("hibernate.cfg.xml") + .addAnnotatedClass(Instructor.class) + .addAnnotatedClass(InstructorDetail.class) + .addAnnotatedClass(Course.class) + .addAnnotatedClass(Review.class) + .addAnnotatedClass(Student.class) + .buildSessionFactory(); + + // create session + Session session = factory.getCurrentSession(); + + try { + // start transaction + session.beginTransaction(); + + // create a course + Course course = new Course("Pacman - How to Scorce One Million Points"); + + + // save the course ... and leverage the cascade all :-) + System.out.println("Saving the course"); + System.out.println(course); + session.save(course); + System.out.println("Saved the course."); + + // create students + Student stu1 = new Student("John", "Doe", "john@gmail.com"); + Student stu2 = new Student("Mary", "Public", "mary@gmail.com"); + + // add students to course + course.addStduent(stu1); + course.addStduent(stu2); + + // save the students + System.out.println("Saving students..."); + System.out.println(stu1); + System.out.println(stu2); + session.save(stu1); + session.save(stu2); + System.out.println("Saved students: " + course.getStudents()); + + // commit + session.getTransaction().commit(); + + System.out.println("DONE!"); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + + // add clean up code + session.close(); + factory.close(); + } + + } + +} diff --git a/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Course.java b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Course.java index 6d2d850..47ca993 100644 --- a/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Course.java +++ b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Course.java @@ -35,8 +35,8 @@ public class Course { cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH }) @JoinTable( name="course_student", - joinColumns=@JoinColumn("course_id"), - inverseJoinColmns=@JoinColumn("stduent_id") + joinColumns=@JoinColumn(name="course_id"), + inverseJoinColumns=@JoinColumn(name="student_id") ) private List students; diff --git a/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Student.java b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Student.java index 46f0513..17b2431 100644 --- a/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Student.java +++ b/hb-05-many-to-many/src/com/luv2code/hibernate/demo/entity/Student.java @@ -26,8 +26,8 @@ public class Student { cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH }) @JoinTable( name="course_student", - joinColumns=@JoinColumn("student_id"), - inverseJoinColmns=@JoinColumn("course_id") + joinColumns=@JoinColumn(name="student_id"), + inverseJoinColumns=@JoinColumn(name="course_id") ) private List courses;