zoukankan      html  css  js  c++  java
  • 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());
            }
        }
    }

  • 相关阅读:
    You are not late! You are not early!
    在同一个服务器(同一个IP)为不同域名绑定的免费SSL证书
    Vue.js Is Good, but Is It Better Than Angular or React?
    It was not possible to find any compatible framework version
    VS增加插件 Supercharger破解教程
    Git使用ssh key
    Disconnected: No supported authentication methods available (server sent: publickey)
    VS 2013打开.edmx文件时报类型转换异常
    asp.net MVC4 框架揭秘 读书笔记系列3
    asp.net MVC4 框架揭秘 读书笔记系列2
  • 原文地址:https://www.cnblogs.com/daochong/p/4950845.html
Copyright © 2011-2022 走看看