Hibernate关联关系配置一对多一对一和多对多Word格式.docx

上传人:b****4 文档编号:16584030 上传时间:2022-11-24 格式:DOCX 页数:7 大小:138.91KB
下载 相关 举报
Hibernate关联关系配置一对多一对一和多对多Word格式.docx_第1页
第1页 / 共7页
Hibernate关联关系配置一对多一对一和多对多Word格式.docx_第2页
第2页 / 共7页
Hibernate关联关系配置一对多一对一和多对多Word格式.docx_第3页
第3页 / 共7页
Hibernate关联关系配置一对多一对一和多对多Word格式.docx_第4页
第4页 / 共7页
Hibernate关联关系配置一对多一对一和多对多Word格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

Hibernate关联关系配置一对多一对一和多对多Word格式.docx

《Hibernate关联关系配置一对多一对一和多对多Word格式.docx》由会员分享,可在线阅读,更多相关《Hibernate关联关系配置一对多一对一和多对多Word格式.docx(7页珍藏版)》请在冰豆网上搜索。

Hibernate关联关系配置一对多一对一和多对多Word格式.docx

?

xmlversion="

1.0"

encoding="

utf-8"

>

!

DOCTYPEhibernate-mappingPUBLIC"

-//Hibernate/HibernateMappingDTD3.0//EN"

"

<

hibernate-mapping>

classname="

com.suxiaolei.hibernate.pojos.Customer"

table="

customer"

--主键设置-->

idname="

id"

type="

string"

columnname="

/column>

generatorclass="

uuid"

/generator>

/id>

--属性设置-->

propertyname="

username"

column="

/property>

balance"

integer"

setname="

orders"

inverse="

true"

cascade="

all"

keycolumn="

customer_id"

>

/key>

one-to-manyclass="

com.suxiaolei.hibernate.pojos.Order"

/>

/set>

/class>

/hibernate-mapping>

订单(多方):

orderNumber"

cost"

many-to-onename="

class="

save-update"

/many-to-one>

  "

关联关系,Customer方对应多个Order方,所以Customer包含一个集合用于存储多个Order,Order包含一个Customer用于储存关联自己的Customer。

一对多关联关系有一种特例:

自身一对多关联。

例如:

自身一对多关联自身的hbm文件设置:

com.suxiaolei.hibernate.pojos.Category"

category"

name"

chidrenCategories"

category_id"

parentCategory"

外键存放父亲的主键。

第二种关联关系:

多对多

  多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。

数据表间多对多关系如下图:

多对多关系在hbm文件中的配置信息:

学生:

com.suxiaolei.hibernate.pojos.Student"

student"

increment"

courses"

false"

student_course"

student_id"

many-to-manyclass="

com.suxiaolei.hibernate.pojos.Course"

course_id"

/many-to-many>

课程:

course"

students"

  其实多对多就是两个一对多,它的配置没什么新奇的相对于一对多。

在多对多的关系设计中,一般都会使用一个中间表将他们拆分成两个一对多。

set>

标签中的"

table"

属性就是用于指定中间表的。

中间表一般包含两个表的主键值,该表用于存储两表之间的关系。

由于被拆成了两个一对多,中间表是多方,它是使用外键关联的,<

key>

是用于指定外键的,用于从中间表取出相应的数据。

中间表每一行数据只包含了两个关系表的主键,要获取与自己关联的对象集合,还需要取出由外键所获得的记录中的另一个主键值,由它到对应的表中取出数据,填充到集合中。

many-to-many>

中的"

column"

属性是用于指定按那一列的值获取对应的数据。

  例如用course表来说,它与student表使用一个中间表student_course关联。

如果要获取course记录对应的学生记录,首先需要使用外键"

从student_course表中取得相应的数据,然后在取得的数据中使用"

列的值,在student表中检索出相关的student数据。

其实,为了便于理解,你可以在使用course表的使用就把中间表看成是student表,反之亦然。

这样就可以使用一对多的思维来理解了,多方关联一方需要外键那么在本例子中就需要"

来关。

第三种关联关系:

一对一

  一对一关系就球队与球队所在地之间的关系,一支球队仅有一个地址,而一个地区也仅有一支球队(貌似有点勉强,将就下吧)。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。

图示如下:

一对一外键关联:

一对一主键关联:

要求两个表的主键必须完全一致,通过两个表的主键建立关联关系:

一对一外键关联在hbm文件中的配置信息:

地址:

com.suxiaolei.hibernate.pojos.Adress"

adress"

city"

one-to-onename="

team"

com.suxiaolei.hibernate.pojos.Team"

/one-to-one>

球队:

adress_id"

unique="

  一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。

多方退化成一只需要在<

many-to-one>

标签中设置"

unique"

="

一对一主键关联在hbm文件中的配置信息:

foreign"

paramname="

property"

adress<

/param>

一对一主键关联,是让两张的主键值一样。

要使两表的主键相同,只能一张表生成主键,另一张表参考主键。

  <

class"

就是设置team表的主键参照adress属性的主键值。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1