前几篇文章详细讨论了对象模型到关系模型的转化方法,对映射关系做了详细的了解,Hibernate将对象模型转化为相应的关系模型是通过使用相应的映射来完成的(同样也可以使用注解),对于对象之间的关系的转化则是通过使用相应的标签来实现的,对象模型的关系多样性,决定了关系模型的多样性,本文将会对关系映射做总结,使用关系导图来记忆这些标签的使用方法。

一、映射大杂烩

Hibernate通过使用不同的标签实现了对象模型向关系模型的转化过程,但是Hibernate提供了多种映射标签,各种标签通过绘制导图,汇总如下图:

从对象的角度出发可以把映射分为两种一种是关联关系的映射,另外一种是继承关系的映射,其中的组合映射其实是关联关系的一种特殊情况。因为对象之间有多重性关系,所以对象的关系继续划分的话又会有多对多、一对多、多对一、一对一的关系出现,在对象模型中称为多重性,通过使用相应的标签来实现相应的模型的转化。另外这种多重性的关系是相互的所以又可以更加细致的划分为单向性和多向性,单向的关联关系只需要在维护关系的一端添加相对应的标签,双向的映射则需要在对象的两端同时添加对应的标签,因为它是两端同时维护关系的。最后还有一种特殊的组合映射,在对象模型中经常出现,是最强的关联关系,它的映射相对简单。

从关系表的角度出发可以把映射分为集合映射和复合主键映射,集合映射在开发中不经常使用,因为可以通过多重性映射来替代集合映射,可以多了解这种映射即可。对于复合主键映射在设计数据库时不提倡使用,设计数据库时讲求主键唯一,并且选择列集合最少的候选键作为主键,但是一定要了解。

二、映射标签

上文对映射做了详细的划分,通过划分来理清映射之间的关系,便于掌握使用,这里详细来讨论不同的映射所使用的标签实现方法。

2.1 对象模型

关联映射经常用到,对关联关系做划分的话就会出现不同的映射关系,按照关系的多重性划分了不同的映射集合,具体映射的标签如下:

多对多:<many-to-many>

            一对多:<one-to-many>

            多对一:<many-to-one>

            一对一:<one-to-one>

Note:通过使用多重性的映射标签,可以实现对象模型到关系模型的转化。单向的关联只需要在维护关系的一端添加对应的标签,双向关联需要在对象的两端同时添加对应的标签。

组合映射<component>,通过使用该标签将一个对象添加到另一个对象中,生成相应的表结构也会将两个对象合成为一张表,映射简单易懂。

继承映射<subclass>,继承映射也只会生成一张表,在该表中添加相应的类型标签来指明不同的对象的类型,所以需要添加鉴别器<discriminator>标签,并在映射文件中需要添加子类的属性标签。

2.2 关系表

这里分为两种一种是集合映射,同时使用Hibernate提供的集合标签来实现映射关系的转换,另外还需要注意集合的不同类型,根据类型来添加不同的子标签。

Set:<set>;Array:<array>;

            Map:<map>,键值成对,需要添加<map-key>子标签;

            List:<list>,对象数据是有序的,需要添加<list-index>/<index>;

            所有的集合映射:<key>标签指明关系表的主键,<element>指明关系表的属性。

另外还有一种复合主键映射<composite-id>,指明复合主键的关系,在对象模型中需要将主键对象单独转化为一个类,并且该类要实现序列化接口,同时使用该标签将该对象注册到主对象中。

有关映射的详细使用方法,请查看笔者的文章:【Hibernate步步为营】:详解基本映射

关联映射之多对一

单向关联一对一映射

双向关联一对一映射详解(一)/(二)

(一对多映射)之单向关联/双向关联

多对多映射详解、继承映射、

复合主键映射、组合映射、集合映射。

结语

本文是映射的总结性文章,对关系模型和对象模型之间的转化过程做了总结性的讨论,目的是对映射进行分类减轻使用负担,在开发中可以很快的理解该使用何种类型的映射,其实相当的简单,但是需要动手去实践,通过实践来加深对映射的理解,并达到灵活运用的目的。

【Hibernate步步为营】--映射合集汇总相关推荐

  1. 阿里云盘资源合集汇总!!

    阿里云盘资源合集汇总!! 阿里云盘资源,阿里云盘影视资源,阿里云盘动漫资源,阿里云盘小说资源 阿里云盘音乐资源,阿里云盘综艺资源,阿里云盘教程,课程资源 本教程更新时间:2022.10.15 阿里盘搜 ...

  2. AAAI2021论文合集汇总!(持续更新)

    论文标题 论文地址 论文作者 Non-Autoregressive Coarse-to-Fine Video Captioning https://arxiv.org/abs/1911.12018 B ...

  3. 三维重建经典论文合集汇总

    三维重建涉及计算机视觉.图形学等多门知识,是一套非常复杂的系统.经典三维重建系统包括整个pipeline从相机标定.基础矩阵与本质矩阵估计.特征匹配到运动恢复结构(SFM),从SFM到稠密点云重建.表 ...

  4. idea开发工具常用的插件合集汇总

    idea插件的安装: file -> setting -> plugins ->install 1.GitToolBox 跟踪每行代码的提交修改记录. 2.Maven Helper ...

  5. 简易中文自动文摘系统(合集)

    目录 简易中文自动文摘系统(一):绪论 自动文摘的介绍 自动文摘分类 简易中文自动文摘系统(二):中文语料库的准备 中文语料库 jieba分词 简易中文自动文摘系统(三):模型训练 词向量 word2 ...

  6. 学习Oracle数据库入门到精通教程资料合集

    任何大型信息系统,都需要有数据库管理系统作为支撑.其中,Oracle以其卓越的性能获得了广泛的应用.本合集汇总了学习Oracle数据库从入门到精通的30份教程资料. 资料名称 下载地址 超详细Orac ...

  7. 【嵌入式】超详细的嵌入式路径学习精选合集,建议收藏

    超详细的嵌入式路径学习精选合集,纯干货,建议收藏! 本合集归类汇总了嵌入式开发技术相关的学习路径.知识与经验总结,以及一些源码.资料分享等.将其分类列出目录,一来为了避免有些知识长时间不用,会很容易忘 ...

  8. 重磅来袭!CVPR2023立体匹配文献合集

    CVPR2023立体匹配相关文献合集汇总,在公众号「3D视觉工坊」后台,回复「原论文」,即可获取. 论文题目:Gated Stereo: Joint Depth Estimation from Gat ...

  9. 【数据结构】- 【考研复试面试题】-汇总大合集

    数据结构-考研复试面试题-汇总大合集 _写在前面的话:第二次写文章,本篇文章涉及内容主要包括数据结构与算法,包含市面上最热门的面试题,加以总结,用于本人的专业课面试复习,包括一些个人理解和总结, 如果 ...

最新文章

  1. REST风格的url
  2. 硬件开源需求迫切?开源笔电 Nevona 筹款金额达预设目标3倍
  3. 去重数组里面重复数据
  4. python for while enumerate
  5. python 判断线程是否执行完毕_判断线程池中的线程是否全部执行完毕
  6. java+icepdf+下载_Java使用icepdf将pdf文件按页转成图片
  7. LinkedList 源码小解
  8. 设计模式(10)——迭代器模式
  9. 常用的一些集合工具类
  10. 安卓车机没有ADB调试,任意安装第三方软件教程
  11. DEA用法(1)--三阶段DEA模型与DEAP使用方法教程
  12. eclipse加载jdbc驱动(mysql)
  13. PDF文件添加图片、文字合成(java)
  14. python打开摄像头黑屏怎么办_python、cv2.imshow()、raspberryPi和黑屏
  15. i5 12400f参数 i512400f评测
  16. 黑盒测试——测试准备阶段
  17. java使用cmd编译中文时错误,解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题...
  18. mysql查询雇员地址和电话_数据库的查询(结合YGGL.sql)
  19. Latex中的狄拉克算符
  20. LINUX系统是什么?

热门文章

  1. 六款视频剪辑神器,做影视剪辑短视频事半功倍,15天有3000
  2. Spring|Spring知识点总结思维导图
  3. 对 iOS 14.2 糟糕的音乐控制界面的思考
  4. 【java】java intellij idea 破解
  5. centOS6.5中静默安装oracle 11gR2
  6. Friendship 友谊--我最宝贵的财富
  7. 1.12 DICOM彩色图像
  8. 自动打call机 qq伪自动发消息
  9. Unity3d学习日记 (1)为场景内物体添加基本逻辑和脚本代码
  10. java程序设计之炮打飞机