Hibernate关联关系配置_第1页
Hibernate关联关系配置_第2页
Hibernate关联关系配置_第3页
Hibernate关联关系配置_第4页
Hibernate关联关系配置_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hbernate关联关系配置(一对多、一对一和多对多)Hibernate 关联关系配置第一种关联关系:一对多(多对一)一对多是最普遍的映射关系,简单来讲就如消费者与订单的关系。 一对多:从消费者角的度来说一个消费者可以有多个订单,即为一对 多。多对一:从订单的角度来说多个订单可以对应一个消费者,即为多对一对多关系在hbm文件中的配置信息:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hiber

2、nate-mapping-3.0.dtd!-主键设置- generator class=uuid/generator !-属性设置-property name = username column=usernametype=string/propertyproperty name=balance column=balance type=integer/propertyset name=orders inverse=true cascade=allkey column =customer_id /keyone-to-many class=com.suxiaolei.hibernate.pojosO

3、rder/set/class/hibernate-mapping订单(多方):!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdgenerator class=uuid/generatorproperty name=orderNumber column=orderNumbertype=string/propertyproperty name=cos

4、t column=cost type=integer/propertymany-to-one name=customer class=com.suxiaolei.hibernate.pojos.Customerco=customer_id cascade=save-update/many-to-one/class/hibernate-mapping一对多关联关系,Customer方对应多个Order方,所以Customer包含一个集合用于存储多个Order, Order包含一个Customer用于储存关联自己的Customer。一对多关联关系有一种特例:自身一对多关联。例如:电子产品电脑WP7

5、IOS平板电脑笔电子产品电脑WP7IOS平板电脑笔自身一对多关联自身的hbm文件设置:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdgenerator class=uuid/generatorproperty name=name column=name type=string/propertyset name=chidrenCategories

6、 cascade=all inverse=truekey column=category_id/keyone-to-many class=com.suxiaolei.hibernate.pojos.Category/ /setmany-to-one name=parentCategoryclass=com.suxiaolei.hibernate.pojosCategory column=category_id/many-to-one/class/hibernate-mapping外键存放父亲的主键。第二种关联关系:多对多多对多关系也很常见,例如学生与选修课之间的关系,一个学生 可以选择多门选修

7、课,而每个选修课又可以被多名学生选择。数据库 中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为 两个一对多。数据表间多对多关系如下图:多对多关系在hbm文件中的配置信息: 学生:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=id/columngenerator class=increment/generato

8、rproperty name=name column=name type=string/propertykey column=student_id/keymany-to-many class=com.suxiaolei.hibernate.pojos.Course coli=icourse_id/many-to-many/set/class/hibernate-mapping课程:?xml version=1.0 encoding=utf-8?!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN H

9、YPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdclass name=com.suxiaolei.hibernate.pojosCourse table=courseid name=id type=integercolumn name=id/columngenerator class=increment/generator/idproperty name=name column=name type=string/propertyset name=students inverse=true cas

10、cade=save-update table=student_coursemany-to-many class=com.suxiaolei.hibernate.pojos.Student colMistudentidx/many-to-many/set/class/hibernate-mapping其实多对多就是两个一对多,它的配置没什么新奇的相对于一对多。在多对多的关系设计中,一般都会使用一个中间表将他们拆分成两个一对多。set标签中的table属性就是用于指定中间表的。 中间表一般包含两个表的主键值,该表用于存储两表之间的关系。由 于被拆成了两个一对多,中间表是多方,它是使用外键关联的,k

11、ey 是用于指定外键的,用于从中间表取出相应的数据。中间表每一行数 据只包含了两个关系表的主键,要获取与自己关联的对象集合,还需 要取出由外键所获得的记录中的另一个主键值,由它到对应的表中取 出数据,填充到集合中。manytomany 中的column属性是 用于指定按那一列的值获取对应的数据。例如用course表来说,它与student表使用一个中间表 student_course关联。如果要获取course记录对应的学生记录, 首先需要使用外键course_id从student_course表中取得相 应的数据,然后在取得的数据中使用student_id列的值,在 student表中检索出

12、相关的student数据。其实,为了便于理解, 你可以在使用course表的使用就把中间表看成是student 表,反 之亦然。这样就可以使用一对多的思维来理解了,多方关联一方需要 外键那么在本例子中就需要course_id来关。第三种关联关系:一对一一对一关系就球队与球队所在地之间的关系,一支球队仅有一个 地址,而一个地区也仅有一支球队(貌似有点勉强,将就下吧)。数 据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。 图示如下:一对一外键关联:一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主 键建立关联关系:一对一外键关联在hbm文件中的配置信息: 地址:!DOCTY

13、PE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=idproperty name=city column=city type=string/propertyone-to-one name=team class=com.suxiaolei.hibernate.pojos.Teamcascade=all/one-to-one 球队:!DOC

14、TYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=id/columngenerator class=increment/generator/idproperty name=name column=name type=string/propertymany-to-one name=adress class=com.suxiaolei.

15、hibernate.pojos.Adresscolumn=adress_id unique=true/many-to-one/class /hibernate-mapping一对一外键关联,其实可以看做是一对多的一种特殊形式,多方 退化成一。多方退化成一只需要在 many-to-one标签中设置 unique=true。hibernate-mappingclass name=com.suxiaolei.hibernate.pojosAdress table=adressid name=id type=integercolumn name=id/columngenerator class=increment/generatorproperty name=city column=city type=string/propertyone-to-one name=team class=com.suxiaolei.hibernate.pojos.Teamcascade=all/one-to-one/class/hibernate-mapping球队:hibernate-mapping

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论