Hibernate的多对多实例

时间:2022-09-06 21:33:17

在完成了一对多的实例的基础上,继续做多对多实例。例子是老师和学生,一个老师教多个学生,一个学生也有多个老师。

文档结构如图:

aaarticlea/png;base64,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*Kni90xIW6p+HB6h028hhv4YK6Z9Laa9U77KI7/3vigQCpe86rd2Sw0xYHBugOdTemuxeqdyhWvWFFXwMdBOsD6C6j7p6t3pEN3RVfd4sF3eXVPS+qd8i95B/qDnXPpHsOq3foU3N2DT2JhheoO9T9GvxUvQOAutsM2DuAPFZ3AIC6A4An8H/jAlKA+aui3gAAAABJRU5ErkJggg==" alt="" />

Student.java和Teacher.java的代码为:

 package cn.hibernate.manytomany;

 import java.util.HashSet;
import java.util.Set; public class Student {
private int stuId;
private String stuName;
private Set<Teacher> teachers = new HashSet<Teacher>(); public Student(){ } public Student(int stuId, String stuName, Set<Teacher> teachers) {
this.stuId = stuId;
this.stuName = stuName;
this.teachers = teachers;
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
}

Student.java

 package cn.hibernate.manytomany;

 import java.util.HashSet;
import java.util.Set; public class Teacher {
private int teaId;
private String teaName;
private Set<Student> stus = new HashSet<Student>();
public int getTeaId() {
return teaId;
}
public void setTeaId(int teaId) {
this.teaId = teaId;
}
public String getTeaName() {
return teaName;
}
public void setTeaName(String teaName) {
this.teaName = teaName;
}
public Set<Student> getStus() {
return stus;
}
public void setStus(Set<Student> stus) {
this.stus = stus;
}
public Teacher(int teaId, String teaName, Set<Student> stus) {
this.teaId = teaId;
this.teaName = teaName;
this.stus = stus;
} public Teacher(){ }
}

Teacher.java

在hibernate.cfg.xml最后添加映射关系:

<mapping resource="cn/hibernate/manytomany/teacher.hbm.xml"/>
<mapping resource="cn/hibernate/manytomany/student.hbm.xml"/>

teacher.hbm.xml和student.hbm.xml的代码为:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="cn.hibernate.manytomany.Teacher" table="t_teacher">
<id name="teaId" column="teaId">
<generator class="native"></generator>
</id> <property name="teaName" column="teaName" /> <!-- student不放弃外键的维护 -->
<set name="stus" table="t_tea_stu" cascade="all" inverse="false">
<key column="teaId"></key>
<many-to-many class="cn.hibernate.manytomany.Student" column="stuId"></many-to-many>
</set>
</class>
</hibernate-mapping>

teacher.hbm.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="cn.hibernate.manytomany.Student" table="t_student">
<id name="stuId" column="stuId">
<generator class="native"></generator>
</id> <property name="stuName" column="stuName"></property> <!-- teacher放弃外键的维护 -->
<set name="teachers" table="t_tea_stu" cascade="all" inverse="true">
<key column="stuId"></key>
<many-to-many class="cn.hibernate.manytomany.Teacher" column="teaId"></many-to-many>
</set>
</class>
</hibernate-mapping>

student.hbm.xml

MainFunc.java的代码为:

 package cn.hibernate.manytomany;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; public class MainFunc { public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = null;
try{
tx = session.beginTransaction(); Teacher tea1 = new Teacher();
tea1.setTeaName("Zhangsan");
Teacher tea2 = new Teacher();
tea2.setTeaName("Lisi"); Student stu1 = new Student();
stu1.setStuName("Sheldon");
Student stu2 = new Student();
stu2.setStuName("Leonard");
Student stu3 = new Student();
stu3.setStuName("Howard");
Student stu4 = new Student();
stu4.setStuName("Raj"); //把student和teacher关联
stu1.getTeachers().add(tea1);
stu1.getTeachers().add(tea2);
stu2.getTeachers().add(tea1);
stu2.getTeachers().add(tea2);
stu3.getTeachers().add(tea1);
stu4.getTeachers().add(tea2); //把teacher和student关联
tea1.getStus().add(stu1);
tea1.getStus().add(stu2);
tea1.getStus().add(stu3);
tea2.getStus().add(stu1);
tea2.getStus().add(stu2);
tea2.getStus().add(stu4); //由于teacher放弃了外键的维护,所以没有session.save(tea1/tea2)
session.save(stu1);
session.save(stu2);
session.save(stu3);
session.save(stu4); System.out.println("Add success");
tx.commit();
}catch(Exception e){
e.printStackTrace();
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
} }

MainFunc.java

最后,数据库中增加了t_teacher,t_student和中间表t_tea_stu

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAwCAIAAABBtHUgAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACo0lEQVR42u2bvUvDQBjG8y917Co4KLj4LzhJJxEHERcpTsVJHCQ4FOoQqEOhHYR2KbSDELc4CHFweAeHjBkczqsfUE3uK6bJNXlejnAtyeVyvzy5j4dzGMLicNAEtcPTuYs63ndqd6PDm6h1RXsXtHtO26e0cUTNI0LTl4mnN2XuhLn37HLEOgPW9tjJLTvsxq3ruHUVNw8CNH0+eNpnbVFSqueES+c6+tLNxvFCNM2DRWrs+4pqfcZyxrqGK6RiWniM/ufRG6W0fvzOophRxMI31txp6Tz/n0yGFlzpVablZ6iPGZ7lGyjxzB7Cr8Tz43k4nAb9ScDxDCc+8JSPRySd/kiBx/mJ1J+a35bUq0TniO4l+sYmC08tRH5Jnnic36GpnjFP85Cz4brp3we9gR+8xvwowZMUjU4m29uaekLyPcglY6l6lnXD2fjPsXtnC55UFWbDk5SdxXgGsz/9DVcMp+J6/gKPN7MHj7IRs1WjHDyaIzfXG/MjEYWvFLyQ/0SzRxo/0HBO/SnJ8SRfRp2+R/Tk8s99aich6WnkckmtsKSLKm3ec9kdNjb3GlvCpDNyQ9Rozc1JBPAggAd4EMCDKAoP/B7b8cDvKQgP/B7b8ZiuGqyR37M69rmUXHe/p754RNKx0O+Rl7w63yg3PJX0e1im9WnNGylLtkI99vs9ch0YCXFN8KyP3yNvU9NmNfKNShu5rYvfIypK6fco+x55yQY+4SrmPfB7sOZmPMzNxe8p2DfCkijUgwAe4EFUAg/8HtvxwO8pCA/8HqNZbQl4TFcN6ub32IIHfk918IikUwG/x7SG8HvyUU9eu3lEm0ysU0/1/B4d00Gy48cCPJX2e/55Tvkjt8r7PTq7eZSPUNq8B34P1tyyTB6xvwcBPLWJDzXKLaKDKXTfAAAAAElFTkSuQmCC" alt="" />

数据库内的数据为:

aaarticlea/png;base64,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" alt="" />aaarticlea/png;base64,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" alt="" width="159" height="219" />

完成了Hibernate的多对多的级联映射。

Hibernate的多对多实例的更多相关文章

  1. 【SSH系列】Hibernate映射 -- 多对多关联映射

         映射原理 在数据库学习阶段,我们知道,如果实体和实体之间的关系是多对多,那么我们就抽出来第三张表,第一张表和第二张表的主键作为第三表的联合主键,结合我们的hibernate,多对多关联,无论 ...

  2. hibernate之多对多关系

    hibernate的多对多hibernate可以直接映射多对多关联关系(看作两个一对多) 下面我们拿三张表来做实例 t_book_hb t_book_category_hb(桥接表) t_catego ...

  3. hibernate中多对多关联

    hibernate中多对多关联 “计应134(实验班) 凌豪” 在关系数据库中有一种常见的关系即多对多关系,例如课程和学生的关系,一个学生可以选择多门课程,同时一门课程也可以被多个学生选择, 因此课程 ...

  4. Springmvc&plus;Spring&plus;Hibernate搭建方法及实例

    Springmvc+Spring+Hibernate搭建方法及实例  

  5. Hibernate 单项多对一的关联映射

    在日常开发中会出现很对多对一的情况,本文介绍hibernate中多对一的关联映射. 1.设计表结构 2.创建student对象 3.创建Grade对象 4.写hbm.xml文件 5.生成数据库表 生成 ...

  6. Hibernate的多对多映射关系

    example: 老师(teacher)和学生(Student)就是一个多对多的关系吧?老师可以有多个学生,学生也可以由多个老师,那在Hibernate中多对多是怎样实现的呢?? 在Hibernate ...

  7. Hibernate中多对多的annotation的写法(中间表可以有多个字段)

    2011-07-04 6:52 一般情况下,多对多的关联关系是需要中间表的: 情况一:如果中间表仅仅是做关联用的,它里面仅有2个外键做联合主键,则使用ManyToMany(不用写中间表的Model,只 ...

  8. hibernate关联关系 &lpar;多对多&rpar;

    hibernate的多对多 hibernate可以直接映射多对多关联关系(看作两个一对多  多对多关系注意事项 一定要定义一个主控方 多对多删除 主控方直接删除 被控方先通过主控方解除多对多关系,再删 ...

  9. Hibernate之多对多表,操作实例

    多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配 ...

随机推荐

  1. centos7中没有安装ifconfig命令的解决方法

    初装centos 7时,运行config报 command not found 错误,我在网上找了大量资料,下面的资料中查找原因和解决方式最详细,能很好的解决这个问题. ifconfig命令是设置或显 ...

  2. ebay api接口开发基本步骤

    因公司项目需求,要进行ebay api开发,网上很多资料已过时,自己记录一下. 准备工作 一.注册账号 1开发者账号注册 https://developer.ebay.com/signin?retur ...

  3. MySQL mac 安装

    MySQL mac的安装着实费了些功夫.最开始想省事用brew 安装,结果总是有问题,原来brew安装MySQL并没那么简单,还要进行一些配置.索性直接到网站下载: http://www.mysql. ...

  4. 终极事务处理(XTP,Hekaton)——万能大招?

    在SQL Server 2014里,微软引入了终极事务处理(Extreme Transaction Processing),即大家熟知的Hekaton.我在网上围观了一些文档,写这篇文章,希望可以让大 ...

  5. SQL Server里如何随机记录集

    今天的文章,我想给你简单介绍下SQL Server里如何随机记录集. SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENT ...

  6. PHP 设计模式 笔记与总结(6)基础设计模式:工厂模式、单例模式和注册树模式

    三种基础设计模式(所有面向对象设计模式中最常见的三种): ① 工厂模式:使用工厂方法或者类生成对象,而不是在代码中直接new 在 Common 目录下新建 Factory.php: <?php ...

  7. js遍历集合

    首先,描述一下问题.由于需要后台取出数据,遍历展示在table中,大体如下: 后台取出的是 Map<String , List<Object>>,下面是我写得比较朴素一点的写法 ...

  8. DB2存储过程实现查询表数据,生成动态SQL,并执行

    一.动态执行SQL PREPARE S1 FROM 'delete from test'; EXECUTE S1; 二.使用游标 DECLARE V_CURSOR CURSOR FOR SELECT ...

  9. 玩转nodeJS系列:使用原生API实现简单灵活高效的路由功能&lpar;支持nodeJs单机集群&rpar;&comma;nodeJS本就应该这样轻快

    前言: 使用nodeJS原生API实现快速灵活路由,方便与其他库/框架进行整合: 1.原生API,简洁高效的轻度封装,加速路由解析,nodeJS本就应该这样轻快 2.不包含任何第三方库/框架,可以灵活 ...

  10. PowerEdge R430 机架式服务器安装&lpar; Ubuntu server 14&period;04&period;1 、PHP5&period;5&period;9、PHP-redis2&period;8、Phalcon3&period;1&rpar;

    未解决问题:换成静态路由的话,怎么就 apt-get udpate 出现错误信息! 解决办法:么有设置网关 一.Ubuntu 系统下载地址: https://certification.ubuntu. ...