第一步:编写两个pojo,比如一个学生表一个课程表  这里使用注解。

需要

课程表:

 1 package com.qcf.pox;
 2
 3 import java.util.HashSet;
 4 import java.util.Set;
 5
 6 import javax.persistence.Entity;
 7 import javax.persistence.GeneratedValue;
 8 import javax.persistence.GenerationType;
 9 import javax.persistence.Id;
10 import javax.persistence.ManyToMany;
11
12 @Entity
13 public class Course {
14     @Id
15     @GeneratedValue(strategy=GenerationType.AUTO)
16     private int id;
17     private String name;
18     @ManyToMany(mappedBy="courses")
19     private Set<Student2> student2s=new HashSet<Student2>();
20     public int getId() {
21         return id;
22     }
23     public void setId(int id) {
24         this.id = id;
25     }
26     public String getName() {
27         return name;
28     }
29     public void setName(String name) {
30         this.name = name;
31     }
32     public Set<Student2> getStudent2s() {
33         return student2s;
34     }
35     public void setStudent2s(Set<Student2> student2s) {
36         this.student2s = student2s;
37     }
38     public Course(int id, String name, Set<Student2> student2s) {
39         super();
40         this.id = id;
41         this.name = name;
42         this.student2s = student2s;
43     }
44     public Course() {
45         super();
46     }
47
48 }

View Code

学生表:

 1 package com.qcf.pox;
 2
 3 import java.util.HashSet;
 4 import java.util.Set;
 5
 6 import javax.persistence.CascadeType;
 7 import javax.persistence.Entity;
 8 import javax.persistence.GeneratedValue;
 9 import javax.persistence.GenerationType;
10 import javax.persistence.Id;
11 import javax.persistence.ManyToMany;
12
13 @Entity
14 public class Student2 {
15     @Id
16     @GeneratedValue(strategy=GenerationType.AUTO)
17     private int id;
18     private String name;
19     @ManyToMany(cascade=CascadeType.ALL)
20     private Set<Course> courses=new HashSet<Course>();
21     public int getId() {
22         return id;
23     }
24     public void setId(int id) {
25         this.id = id;
26     }
27     public String getName() {
28         return name;
29     }
30     public void setName(String name) {
31         this.name = name;
32     }
33     public Set<Course> getCourses() {
34         return courses;
35     }
36     public void addCourses(Course courses) {
37         this.courses.add(courses);
38     }
39     public Student2(int id, String name, Set<Course> courses) {
40         super();
41         this.id = id;
42         this.name = name;
43         this.courses = courses;
44     }
45     public Student2() {
46         super();
47     }
48
49 }

View Code

第二步:在hibernate.cfg.xml文件中引入这两个po类

1         <mapping class="com.qcf.pox.Student2"/>
2         <mapping class="com.qcf.pox.Course"/>

View Code

第三步:编写测试代码

 1 package com.qcf.test;
 2
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.AnnotationConfiguration;
 7 import org.hibernate.cfg.Configuration;
 8
 9 import com.qcf.pox.Course;
10 import com.qcf.pox.Student2;
11
12 public class TestManyToMany {
13     public static void main(String[] args) {
14         Configuration configuration=new AnnotationConfiguration().configure();
15         SessionFactory factory=configuration.buildSessionFactory();
16         Session session=factory.openSession();
17         Transaction transaction=session.beginTransaction();
18
19         //创建两个课程
20         Course course=new Course();
21         course.setName("java");
22         Course course2=new Course();
23         course2.setName("C#");
24
25         //创建两个学生
26         Student2 student=new Student2();
27         student.setName("zhangsan");
28         Student2 student2=new Student2();
29         student2.setName("lisi");
30
31         student.addCourses(course);
32         student.addCourses(course2);
33
34         student2.addCourses(course);
35         student2.addCourses(course2);
36
37         session.save(student);
38         session.save(student2);
39
40         transaction.commit();
41         session.close();
42
43     }
44
45 }

View Code

执行成功后的结果:

转载于:https://www.cnblogs.com/quchengfeng/p/4111344.html

Hibernat之关系的处理多对多相关推荐

  1. Hibernate的关系映射——Many-To-Many(多对多)

    多对多:多对多的关系至少需要三张表,两张关系表,一张中间表,用来保存两个表之间的关系. 用一个例子来表明多对多的关系:用户.角色以及用户角色. 实际应用中:一个用户可能会有多个角色,而一个角色也会有多 ...

  2. sql语句之多表关系 一对多 多对多

    多表的关系介绍 在实际的开发过程中,项目一定是有多张表的,且这些表之间是都有关系的 表与表之间的关系分类:一对一 一对多 多对多 一对一:A表的一行对应B表的一行,反之也成立,此时,两张表可以合并成一 ...

  3. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

  4. SQLAlchemy_定义(一对一/一对多/多对多)关系

    SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...

  5. 【Hibernate】Hibernate实体关系映射——单边的多对一关系

    单边的多对一关系 单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的.例如:论文与论文类别: 具体实现如下: Type实体类的java注 ...

  6. mysql一对多如何设计_数据库在一对一、一对多、多对多怎么设计表关系

    1.一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子 2.一对多可以建两张表,将一这一方的主键作为多那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对多的关系 ...

  7. MySQL----表的一对多关系和多对多关系

    MySQL----表的一对多关系和多对多关系 1.一对多关系 1.1名词解释: 一对多关系:通过主键外关系,形成一对多关系. 一表:又称之为主表,主表需要提供主键. 多表:又称之为从表,从表需提供外键 ...

  8. 多对多关系的多表关联查询

    1.什么是多对多关系 多对多关系(百度):多对多关系是关系数据库中两个表之间的一种关系, 该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关.第二个表中的一个行也可以与第一个表中的一个或多个 ...

  9. 如何使用PowerDesigner软件进行数据库设计(多对多关系)

    如何使用PowerDesigner软件进行数据库设计(多对多关系) 1 多对多关系示例 2 创建CDM 3 建立实体之间的联系 4 检查CDM 5 将CDM转换成PDM 6 由PDM生成sql文件 1 ...

最新文章

  1. 广告点击率预测_精品案例|在线广告点击率预测
  2. node 实现Token状态登录 及数据库增删改查
  3. Linux kernel 3.10内核源码分析--slab原理及相关代码
  4. Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant)
  5. opcua客户端实现断线重连_虹科教您|实现OPC UA C/S快速部署及数据采集
  6. idea+maven打包Java项目
  7. WordPress Tweet Blender插件跨站脚本漏洞
  8. openssl代码领读目录
  9. 190402每日一句
  10. 瑞友天翼服务器ip地址怎么修改,瑞友天翼6.0版本iphone移动客户端操作手册
  11. Linux终端怎么打开root,在linux终端中执行root命令有哪些方法
  12. win10熄屏时间不对_浅析win10电脑屏幕熄屏时间设置教程
  13. Java调用的高德api,通过经纬度查询地址信息 - 记录
  14. Graphics2D类基本使用
  15. ThinkPHP--initialize()方法
  16. 绝对优势与比较优势的数学分析与其…
  17. 委外采购订单 Subcontract PO
  18. 华为宣布人事调整:余承东调离华为云
  19. linux - nohup 命令 后一按回车就exit
  20. 苍穹影视V20七彩视界免sq源码 kyuan源码

热门文章

  1. linux内核经典书籍--Linux内核设计与实现
  2. clock_gettime获取时间
  3. Flash芯片(硬盘)与RAM芯片(内存)存储信息的区别!
  4. STM32关于BOOT0和BOOT1设置,去掉Debug后完成硬件独立运行。
  5. 10.利用STM32定时器的PWM输出功能,直接获取PWM波形。
  6. 常考数据结构与算法:买卖股票的最好时机
  7. java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心
  8. 前言(CSDN也有Markdown了,好开森)
  9. 《移动App测试的22条军规》—App测试综合案例分析23.7节测试微信App对于操作系统特性的支持程度...
  10. Python Set Literals