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());
        }
    }
}

转载于:https://www.cnblogs.com/daochong/p/4950845.html

hibernate多对多映射关系实现相关推荐

  1. Hibernate多对多映射 - 连接表

    Hibernate多对多映射 - 连接表 今天我们将使用XML和注释配置来研究Hibernate多对多映射.之前我们看过如何在Hibernate中实现One To One和One To Many映射. ...

  2. Hibernate(五)多对多映射关系

    Many to Many 映射关系(没尝试映射hibernate支持的java类型) 双向多对多外键关联(XML/Annotation) (xml和annotation都实现了) 单向多对多外键关联( ...

  3. java框架篇---hibernate(一对多)映射关系

    一对多关系可以分为单向和双向. 一对多关系单向 单向就是只能从一方找到另一方,通常是从主控类找到拥有外键的类(表).比如一个母亲可以有多个孩子,并且孩子有母亲的主键作为外键.母亲与孩子的关系就是一对多 ...

  4. hibernate多对多映射拆成2个一对多映射(注解)

    hibernate的many to many确实很是方便我们处理实体和集合间的关系,并可以通过级联的方法处理集合,但有的时候many to many不能满足我们的需要,比如 用户<---> ...

  5. Mybatis使用Association解决多对一映射关系

    association :处理多对一的映射关系 property:需要处理的映射关系的属性名 javatype:该属性的类名 <resultMap id="empAndDeptResu ...

  6. Hibernate 多对多映射实列

    Hibernate 3.0.5 1.Usergroup.hbm.xml 用户组表          <set name="users" table="Groupan ...

  7. java中的多对多关系解析_Java中多对多映射关系(转)

    多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...

  8. java中的多对多关系解析_Java中多对多映射关系

    多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...

  9. SpringJpa多对多映射关系

    1.菜单表 @Entity @Table(name="t_menus") public class Menus { @Id     @GeneratedValue(strategy ...

最新文章

  1. 检测一个网页上的链接是否都可以正常访问
  2. 【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
  3. Java实现算法导论中最近点对问题分治法
  4. 2017年软件工程第四次作业-3四则运算
  5. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承
  6. 为什么我不用ViewPager或RecyclerView来做上下滑切换
  7. Docker Consul 安装及使用服务发现
  8. pcb成型板aoi检测_通过自动光学检测(AOI)实现PCB高速检测
  9. php作业制作htm,PHP作业-HTML-2020-09-28
  10. Eclipse-导入maven项目
  11. python删除字符串中的字母_从Python中的字符串中删除除字母数字字符之外的所有内容...
  12. CTRL-Space always toggles Chinese IME (Windows 7、10)
  13. 软件工程师嵌入式开发交流论坛推荐排行
  14. EasyGBS通过GB2818下载流程结合抓包数据详细记录
  15. Supervised pre-trainning有监督预训练
  16. 程序员健康之——护腰指南
  17. IDEA打开Maven项目一直indexing或 scanning files to index导致整个idea页面卡住 解决方法
  18. fiddler抓包指南(浏览器、app抓包及证书安装)
  19. MyBatis从入门到精通(1):MyBatis入门
  20. SOA记录何NS记录的区别

热门文章

  1. 简单神经网络_mnist
  2. BZOJ 2436 Noi嘉年华(优化DP)
  3. Hadoop组件之-HDFS(HA实现细节)
  4. 使用python脚本将XML 电子表格转变为Excel
  5. Git学习笔记1--Git原理简单介绍
  6. Oracle序列号详解
  7. 反序列化时恢复transient字段
  8. 提示illegal reference to data member'CPMAgentManageDlg::m_matrixMatrixSt'in a static member function
  9. YAML_12 批量创建用户,分别设置用户组
  10. C#/VB.NET与西门子PLC进行ModbusTcp通信