Hibernate关联关系配置一对多一对一和多对多.docx
- 文档编号:3679193
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:7
- 大小:138.91KB
Hibernate关联关系配置一对多一对一和多对多.docx
《Hibernate关联关系配置一对多一对一和多对多.docx》由会员分享,可在线阅读,更多相关《Hibernate关联关系配置一对多一对一和多对多.docx(7页珍藏版)》请在冰豆网上搜索。
Hibernate关联关系配置一对多一对一和多对多
Hibernate关联关系配置(一对多、一对一和多对多)
Hibernate关联关系配置
第一种关联关系:
一对多(多对一)
"一对多"是最普遍的映射关系,简单来讲就如消费者与订单的关系。
一对多:
从消费者角的度来说一个消费者可以有多个订单,即为一对多。
多对一:
从订单的角度来说多个订单可以对应一个消费者,即为多对一。
一对多关系在hbm文件中的配置信息:
消费者(一方):
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""
--主键设置-->
--属性设置-->
订单(多方):
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""
column="customer_id"cascade="save-update"> "一对多"关联关系,Customer方对应多个Order方,所以Customer包含一个集合用于存储多个Order,Order包含一个Customer用于储存关联自己的Customer。 一对多关联关系有一种特例: 自身一对多关联。 例如: 自身一对多关联自身的hbm文件设置: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"" 外键存放父亲的主键。 第二种关联关系: 多对多 多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。 数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。 数据表间多对多关系如下图: 多对多关系在hbm文件中的配置信息: 学生: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"" column="course_id"> 课程: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"" column="student_id"> 其实多对多就是两个一对多,它的配置没什么新奇的相对于一对多。 在多对多的关系设计中,一般都会使用一个中间表将他们拆分成两个一对多。 中间表一般包含两个表的主键值,该表用于存储两表之间的关系。 由于被拆成了两个一对多,中间表是多方,它是使用外键关联的, 中间表每一行数据只包含了两个关系表的主键,要获取与自己关联的对象集合,还需要取出由外键所获得的记录中的另一个主键值,由它到对应的表中取出数据,填充到集合中。 例如用course表来说,它与student表使用一个中间表student_course关联。 如果要获取course记录对应的学生记录,首先需要使用外键"course_id"从student_course表中取得相应的数据,然后在取得的数据中使用"student_id"列的值,在student表中检索出相关的student数据。 其实,为了便于理解,你可以在使用course表的使用就把中间表看成是student表,反之亦然。 这样就可以使用一对多的思维来理解了,多方关联一方需要外键那么在本例子中就需要"course_id"来关。 第三种关联关系: 一对一 一对一关系就球队与球队所在地之间的关系,一支球队仅有一个地址,而一个地区也仅有一支球队(貌似有点勉强,将就下吧)。 数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。 图示如下: 一对一外键关联: 一对一主键关联: 要求两个表的主键必须完全一致,通过两个表的主键建立关联关系: 一对一外键关联在hbm文件中的配置信息: 地址: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"" 球队: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"" 一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。 多方退化成一只需要在 一对一主键关联在hbm文件中的配置信息: 地址: 球队: 一对一主键关联,是让两张的主键值一样。 要使两表的主键相同,只能一张表生成主键,另一张表参考主键。 "class"="foreign"就是设置team表的主键参照adress属性的主键值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 关联 关系 配置 一对 一对一