Hibernate- 多對多

來源:互聯網
上載者:User

標籤:root   app   oca   driver   turn   www.   als   integer   doctype   

實體類:

Student.java:

package com.gordon.domain;import java.util.HashSet;import java.util.Set;public class Student {private Integer id;private String name;private Set<Course> courses = new HashSet<Course>();public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}

Course.java:

package com.gordon.domain;import java.util.HashSet;import java.util.Set;public class Course {private Integer id;private String name;private Set<Student> students = new HashSet<Student>();public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}

 

hbm對應檔:

Student.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.gordon.domain.Student" table="t_student"><id name="id" column="id"><generator class="native" /></id><property name="name" column="name" /><set name="courses" table="t_student_course" cascade="save-update" inverse="false" lazy="true"><key column="student_id"/><many-to-many column="course_id" class="com.gordon.domain.Course"/></set></class></hibernate-mapping>

Course.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.gordon.domain.Course" table="t_course"><id name="id" column="id"><generator class="native" /></id><property name="name" column="name" /><set name="students" table="t_student_course" cascade="save-update" inverse="true" lazy="true"><key column="course_id"/><many-to-many column="student_id" class="com.gordon.domain.Student"/></set></class></hibernate-mapping>

 

核心設定檔:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/relation</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">root</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hbm2ddl.auto">update</property><property name="hibernate.show_sql">true</property><property name="hibernate.format_sql">false</property><mapping resource="com/gordon/domain/Student.hbm.xml"/><mapping resource="com/gordon/domain/Course.hbm.xml"/></session-factory></hibernate-configuration>

 

測試類別:

package com.gordon.test;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import com.gordon.domain.Course;import com.gordon.domain.Student;import com.gordon.utils.HibernateUtil;public class TestN2N {/** * 刪除資料 */@Testpublic void run4() {Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();// 刪除學生1的3課程 Student student = session.get(Student.class, new Integer(1)); Course course = session.get(Course.class, new Integer(3)); student.getCourses().remove(course);transaction.commit();session.close();}/** * 修改資料 */@Testpublic void run3() {Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();// 將學生2的3課程刪除// Student student = session.get(Student.class, new Integer(2));// Course course_ori = session.get(Course.class, 3);// student.getCourses().remove(course_ori);// 為學生1添加3課程// Student student = session.get(Student.class, new Integer(1));// Course course = session.get(Course.class, new Integer(3));// student.getCourses().add(course);transaction.commit();session.close();}/** * 查詢資料 */@Testpublic void run2() {Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();Student student = session.get(Student.class, new Integer(1));System.out.println("學生姓名:" + student.getName());System.out.println("所選課程:");for (Course c : student.getCourses()) {System.out.println("--" + c.getName());}Course course = session.get(Course.class, new Integer(3));System.out.println("課程名稱:" + course.getName());System.out.println("選此課程的學生:");for (Student s : course.getStudents()) {System.out.println("--" + s.getName());}transaction.commit();session.close();}/** * 添加資料 */@Testpublic void run1() {Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();Student student1 = new Student();student1.setName("張三");Student student2 = new Student();student2.setName("張三");Course course1 = new Course();course1.setName("高數");Course course2 = new Course();course2.setName("線代");Course course3 = new Course();course3.setName("離散");student1.getCourses().add(course1);student1.getCourses().add(course2);student2.getCourses().add(course1);student2.getCourses().add(course2);student2.getCourses().add(course3);session.save(student1);session.save(student2);transaction.commit();session.close();}}

 

Hibernate- 多對多

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.