当前位置:编程学习 > JAVA >>

hibernate级联之多对多单双向剖析

[html 
多对多: 学生与课程,以下主要从案例出发,由案例具体解析  
  
单向多对多  
Student.hbm.xml  
  
<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  
<hibernate-mapping package="com.hbsi.many2many">  
  
    <class name="Student" table="student">  
        <id name="id">  
           <generator class="native"/>  
        </id>  
        <property name="name" column="name"/>  
          
        <set name="course" table="student_course" cascade="save-update">  
          <key column="student_id"/>  
          <many-to-many column="course_id" class="Course" />  
        </set>  
    </class>  
      
</hibernate-mapping>  
  
Course.hbm.xml  
  
<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  
<hibernate-mapping package="com.hbsi.many2many">  
    
    <class name="Course" table="course">  
        <id name="id">  
           <generator class="native"/>  
        </id>  
        <property name="name" column="name"/>  
  
    </class>  
</hibernate-mapping>  
  
测试类   www.zzzyk.com
package com.hbsi.many2many;  
  
import java.util.HashSet;  
import java.util.Set;  
  
import org.hibernate.Session;  
import org.junit.Test;  
  
import com.hbsi.utils.HibernateSessionFactory;  
  
public class TestApp {  
      
    Session session = HibernateSessionFactory.getSession();  
    @Test  
    public void add(){  
          
        session.beginTransaction();  
          
        Student student1 = new Student();  
        student1.setName("keven");  
          
        Student student2 = new Student();  
        student2.setName("jie");  
          
        Course course1 = new Course();  
        course1.setName("english");  
          
        Course course2 = new Course();  
        course2.setName("chinese");  
          
        Set<Course> courses = new HashSet<Course>();  
        courses.add(course1);  
        courses.add(course2);  
          
        student1.setCourse(courses);  
          
        session.save(student1);  
        session.save(student2);  
        session.save(course1);  
        session.save(course2);  
          
        session.getTransaction().commit();  
        HibernateSessionFactory.closeSession();  
          
    }  
  
    @Test  
    public void find(){  
        Student student = (Student) session.get(Student.class,1);  
        Set<Course> courses = student.getCourse();  
        for(Course course : courses){  
            System.out.println(student.getName()+"---"+course.getName());  
        }  
    }  
}  
  
  
双向多对多  
Student.hbm.xml  
  
<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  
<hibernate-mapping package="com.hbsi.many2manyboth">  
  
    <class name="Student" table="studentboth">  
        <id name="id">  
           <generator class="native"/>  
        </id>  
        <property name="name" column="name"/>  
          
        <set name="course" table="student_courseboth" cascade="save-update">  
          <key column="student_id"/>  
          <many-to-many column="course_id" class="Course" />  
        </set>  
    </class>  
      
</hibernate-mapping>  
  
Course.hbm.xml  
   
<?xml version="1.0"?>  
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,