1、学生与课程(多对多),多个学生对多个课程
先建模型:
学生模型:
public class Student { private Integer sid; private String name; private Set<Course> coursess=new HashSet<Course>(); public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Course> getCoursess() { return coursess; } public Student(String name) { this.name = name; } public void setCoursess(Set<Course> coursess) { this.coursess = coursess; } @Override public String toString() { return "Student{" + "sid=" + sid + ", name='" + name + '\'' + '}'; } }
学生Student.hbm.xml:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.dong.user.model"> <class dynamic-update="true" dynamic-insert="true" name="Student"> <id name="sid" column="sid" > <generator class="native"></generator> </id> <property name="name"></property> <set name="coursess" table="t_stu_course" cascade="all-delete-orphan"> <key column="sid"></key> <many-to-many class="Course" column="cid"></many-to-many> </set> </class> </hibernate-mapping>
课程模型:
public class Course { private Integer cid; private String name; private Set<Student> students=new HashSet<Student>(); public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Course(String name) { this.name = name; } public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } @Override public String toString() { return "Course{" + "cid=" + cid + ", name='" + name + '\'' + '}'; } }
课程Course.hbm.xml:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.dong.user.model"> <class dynamic-update="true" dynamic-insert="true" name="Course"> <id name="cid" column="cid" > <generator class="native"></generator> </id> <property name="name"></property> <set name="students" table="t_stu_course"> <key column="cid"></key> <many-to-many class="Student" column="sid"></many-to-many> </set> </class> </hibernate-mapping>
保存Class:
@Test public void test8() { Session session = HibernateUtils.OpenSession(); session.getTransaction().begin(); Course course1=new Course("维护时间和平"); Course course2=new Course("保卫国家安全"); Student student1=new Student("学生1"); Student student2=new Student("学生2"); student1.getCoursess().add(course1); student2.getCoursess().add(course1); student2.getCoursess().add(course2); session.save(student1); session.save(student2); session.getTransaction().commit(); session.close(); }