• hibernate多对多映射关系实现


    Course.hbm.xml:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="model">

        <class name="Course" table="t_course">
            <id name="id" column="courseId">
                <generator class="native"></generator>
            </id>
            <property name="name" column="courseName"></property>
        </class>

    </hibernate-mapping>

    Course2.hbm.xml:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="model">

        <class name="Course2" table="t_course2">
            <id name="id" column="courseId">
                <generator class="native"></generator>
            </id>
            <property name="name" column="courseName"></property>
            <set name="students" table="student_course2" inverse="true">
                <key column="course_id"></key>
                <many-to-many class="model.Student2" column="student_id"></many-to-many>
            </set>
        </class>

    </hibernate-mapping>

    Student.hbm.xml:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="model">

        <class name="Student" table="t_student">
            <id name="id" column="studentId">
                <generator class="native"></generator>
            </id>
            <property name="name" column="studentName"></property>
            <set name="courses" table="student_course" cascade="save-update">
                <key column="student_id"></key>
                <many-to-many class="model.Course" column="course_id"></many-to-many>
            </set>
        </class>

    </hibernate-mapping>

    Student2.hbm.xml:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="model">

        <class name="Student2" table="t_student2">
            <id name="id" column="studentId">
                <generator class="native"></generator>
            </id>
            <property name="name" column="studentName"></property>
            <set name="courses" table="student_course2" cascade="save-update">
                <key column="student_id"></key>
                <many-to-many class="model.Course2" column="course_id"></many-to-many>
            </set>
        </class>

    </hibernate-mapping>

    StudentTest.java:

    package service;

    import java.util.Iterator;
    import java.util.Set;

    import model.Course;
    import model.Course2;
    import model.Student;
    import model.Student2;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;

    import util.HibernateUtil;


    public class StudentTest {

        SessionFactory sessionfactory=HibernateUtil.getSessionFactory();//获取Session工厂
        private Session session;
        
        @Before
        public void setUp() throws Exception {
            session=sessionfactory.openSession();//生成一个新的session
            session.beginTransaction();//开启事务
        }

        @After
        public void tearDown() throws Exception {
            session.getTransaction().commit();//提交事务
            session.close();//关闭session
        }

        @Test
        public void testSave1(){
            Course course1=new Course();
            course1.setName("语文");
            
            Course course2=new Course();
            course2.setName("数学");
            
            Student student1=new Student();
            student1.setName("一号");
            student1.getCourses().add(course1);
            student1.getCourses().add(course2);
            
            Student student2=new Student();
            student2.setName("二号");
            student2.getCourses().add(course1);
            student2.getCourses().add(course2);
            
            session.save(student1);
            session.save(student2);
        }
        
        @Test
        public void testLoad1(){
            Student student=(Student) session.get(Student.class,1);
            Set<Course> courses=(Set<Course>)student.getCourses();
            Iterator it=courses.iterator();
            while(it.hasNext()){
                Course c=(Course) it.next();
                System.out.println(c.getName());
            }
        }
        
        @Test
        public void testSave2(){
            Course2 course1=new Course2();
            course1.setName("语文");
            
            Course2 course2=new Course2();
            course2.setName("数学");
            
            Student2 student1=new Student2();
            student1.setName("三号");
            student1.getCourses().add(course1);
            student1.getCourses().add(course2);
            
            Student2 student2=new Student2();
            student2.setName("四号");
            student2.getCourses().add(course1);
            student2.getCourses().add(course2);
            
            session.save(student1);
            session.save(student2);
        }
        
        @Test
        public void testLoad2(){
            Course2 course=(Course2) session.get(Course2.class,1);
            Set<Student2> students=(Set<Student2>)course.getStudents();
            Iterator it=students.iterator();
            while(it.hasNext()){
                Student2 s=(Student2) it.next();
                System.out.println(s.getName());
            }
        }
    }

  • 相关阅读:
    由类型名得到该类型
    TypeName of CA1505 is AvoidUnmaintainableCode, not AvoidUnmantainableCode.
    多核
    SSRS throws "The operation has timed out."
    XmlRootAttribute与XmlTypeAttribute
    littleendian and bigendian
    Assembly Exp
    如何在Ubuntu 11.10下成功安装Java [转载]
    *uck up ~,纯发泄
    [转载]读书相关,,
  • 原文地址:https://www.cnblogs.com/daochong/p/4950845.html
Copyright © 2020-2023  润新知