上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射。

多对多单向关联映射

在讲解多对多单向关联映射之前,首先看一下相关类图和代码,具体如下:

    public class Role {private int id;  private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}public class User {    private int id; private String name;private Set roles;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set getRoles() {return roles;}public void setRoles(Set roles) {this.roles = roles;}}

多对多单向关联和一对多单向关联的异同

多对多单向关联映射与一对多单向关联映射类似,都是在指向端被加载时,将被指向段加载上来,即单向的约束,所不同的是将一对多中一的一端从一变成了多而已,这点可以从类图上明显看出。但从代码上看一对多和多对多的区别则很难看出两者的区别。(参考Hibernate从入门到精通(八)一对多单向关联映射)

接下来我们再从存储结构上分析两者的区别和联系。具体如下:

通过上述表结构明显可以看出,在多对多关联映射中,存在第三张表,用以维护关联关系两端对象的对应关系,而这在一对多中则是不存在的。为什么会这样呢?这是因为配置文件的配置不同所导致的这样的映射结果。具体如下:

 <class name="com.zs.hibernate.User" table="t_user"><id name="id"><generator class="native"/></id><property name="name"/><set name="roles" table="t_user_role"><key column="user_id"/><many-to-many class="com.zs.hibernate.Role" column="role_id" />  </set></class><class name="com.zs.hibernate.Role" table="t_role"><id name="id"><generator class="native"/></id><property name="name"/></class>

通过对比上篇文章Hibernate从入门到精通(八)一对多单向关联映射中映射文件可以看出在一对多单向关联中映射配置的属性为<one-to-many/>,而多对多关联映射中配置的属性为<many-to-many/>,这就导致了映射的两种不同结果和两种不同的解决方案。

到此为止关于一对多单向关联映射我们就基本讲完了,下次我们继续讲解关联映射的最后一个内容多对多双向关联映射。

[置顶] Hibernate从入门到精通(十)多对多单向关联映射相关推荐

  1. [置顶] Hibernate从入门到精通(十一)多对多双向关联映射

    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看一 ...

  2. Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  3. 【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  4. Kali Linux 从入门到精通(十)-漏洞挖掘之缓冲区溢出

    Kali Linux 从入门到精通(十)-漏洞挖掘之缓冲区溢出 程序漏洞从哪里来? 罪恶的根源:变量 数据与代码边界不清(注入攻击) 最简漏洞原理-shell 脚本漏洞(本质:输入数据本身,程序本身没 ...

  5. Java从入门到精通十六(函数式接口编程)

    Java从入门到精通十六(函数式接口)

  6. C4D致富经典入门到精通(十)

    C4D中渲染操作与AE交互 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建 ...

  7. Java从入门到精通十四(Lambda表达式)

    Java从入门到精通十四(Lambda表达式) Lambda的引入体验 实例一(抽象方法无参无返回值) 实例二(抽线方法有参无返回值) 实例三(抽象方法带参带返回值) lambda的表达式的简化操作 ...

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

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

  9. MyBatis从入门到精通(十):使用association标签实现嵌套查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解使用associati ...

最新文章

  1. 用 Python 使用 Google Colab?岂止是炫酷
  2. CoTNet 修改笔记
  3. python使用input函数时、必须添加提示文字-python input函数
  4. mysql常用的视图_MySQL视图
  5. CG CTF WEB php decode
  6. LINQ访问DataTable
  7. springboot mysql脚本_springboot配置mysql连接的实例代码
  8. 微信表情包小程序源码-更新登录接口+增加举牌功能
  9. STL vector 用法介绍
  10. 设计灵感在哪里?集设网海纳百川,智慧的聚集地
  11. postgreSQL数据库里面导入数据
  12. babel-preset-env使用介绍
  13. 北航教授王田苗:中国机器人的发展机遇与挑战是什么?
  14. html5在线聊天模板,h5聊天室模板|仿微信聊天室html5
  15. 一个屌丝程序猿的人生(二十二)
  16. 爬虫,爬取猫眼电影Top100的电影名与评分
  17. 【资源分享(免积分)】增长黑客_创业公司的用户与收入增长秘籍 - 范冰(高清版免费).pdf
  18. 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
  19. 简简单单说外键和级联
  20. 《进化——我们在互联网上奋斗的故事》一一1.11 OKRs在J公司

热门文章

  1. 什么?你还在使用fastjson,性能太差了
  2. 让 Spring Boot 启动更快一点
  3. 百度第七期智能对话训练营来了!
  4. DeepMind首席科学家:比起机器智能,我更担心人类智能造成的灾难
  5. 达摩院清华博士研发了一个AI摸鱼神器!有了它,老板都不好意思打扰你
  6. 相机居然能存储气味,未来智能家居会是什么样? | CCF C³
  7. 显卡暴涨,这我万万没想到啊
  8. 博士一次性最高给140万安家费!还享副教授待遇,这所高校为了引进人才!拼了...
  9. 《Linux 命令行大全》. pdf 正式发布啦!
  10. 机器学习算法集锦:从贝叶斯到深度学习及各自优缺点