1 / 28
文档名称:

第13章 复杂映射关系.ppt

格式:ppt   页数:28
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第13章 复杂映射关系.ppt

上传人:中国课件站 2011/11/16 文件大小:0 KB

下载得到文件列表

第13章 复杂映射关系.ppt

文档介绍

文档介绍:第13章复杂映射关系
本章将介绍几种复杂的映射关系:关联关系映射、集合类的映射、组件映射和继承关系映射。与前一章基础映射都是针对单个类不同,这些映射都是涉及两个或者两个以上的类,除了映射类本身与数据库表之间的关系外,还要在映射文件中表达类与类之间的关系。
关联关系映射
Hibernate中的关联(Association)映射主要有3种:一对一关联、一对多(或多对一)关联、多对多关联。每种关联都可以分为单向和双向两种。关联关系映射通常情况是最难配置正确的。在这个部分中,本节将从单向关系映射开始,然后考虑双向关系映射,最后介绍一个完整的实例。
多对一(many to one)
单向many-to-one关联是最常见的单向关联关系。如图所示,类与类之间是多对一的关系。
一对一(one to one)
一对一的关联分为外键关联和主键关联。
(1)外键关联:基于外键关联的单向一对一关联和单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。
(2)主键关联:基于主键关联的单向一对一关联通常使用一个特定的id生成器。这里的关联关系是定义在Address类的映射文件中,在辅表的one-to-one的属性里要加constrained="true"表示受到约束。
一对多(one to many)
基于外键关联的单向一对多关联是一种很少见的情况,并不推荐使用。此时的Person包含一个addresses字段,这个字段是一个Address类的集合。
public class Person {
//一对多实现,包含一个集合类属性
private Set addresses= new HashSet();
public Set getAddresses () {
return addresses;
}
public void setAddresses (Set addresses) {
this. addresses= addresses;
}
}
双向关联(Bidirectional associations)
以上介绍的都是把关联关系定义在两个类中的一个类,也就是主控类中。只有对主控类操作的时候,才会涉及到关联关系,这样还不足以严格表达明确的关联关系。很多时候还需要表达双向的关联关系,也就是在两端的映射中都定义关联关系。
inverse映射属性究竟表示什么呢?一个双向关联仅仅是在两端简单地正确设置引用。然而,Hibernate并没有足够的信息去正确地执行INSERT和UPDATE语句(以避免违反数据库约束),所以它需要一些帮助来正确的处理双向关联。把关联的一端设置为inverse将告诉Hibernate忽略关联的这一端,把这端看成是另外一端的一个镜象(mirror)。这就是所需的全部信息,Hibernate利用这些信息来处理把一个有向导航模型转移到数据库schema时的所有问题。
双向一对一
双向一对一与单向类似也是分为两种。
(1)基于外键关联的双向一对一关联也很常见。
(2)基于主键关联的一对一关联需要使用特定的id生成器。
使用连接表(with join tables)
如果想保持关联两个表的独立性,也就是不想在Person表中出现类似addressId这样不容易理解的字段,就需要使用连接表。专门定义一张表来维护Person与Address之间的关系。关联表结构如图所示。
多对多(many to many)
对于多对多关联或叫n:m实体关系(),需要一个关联表(association table)。表里面的每一行代表从person到address的一个关联。表名是由set元素的table属性配置的。关联里面的标识符字段名,对于person的一端,是由<key>元素定义,而address一端的字段名是由<many-to-many>元素的column属性定义。也必须告诉Hibernate集合中对象的类(也就是位于这个集合所代表的关联另外一端的类)。
(1)单向多对多关联。
(2)双向多对多关联
完整实例
本节将展示一个完整的一对多/多对一双向的实例。
(1)持久化类。为了与之前的示例区分,这里使用时User类和Room类,
(2)映射文件。
(3)测试代码如代码所示,给room增加两个user后直接保存room对象。
(4)运行结果。
(5)指定inverse。

最近更新

2025年晋中职业技术学院单招职业适应性测试题.. 38页

2025年朔州职业技术学院单招职业技能考试模拟.. 39页

2025年松原职业技术学院单招职业倾向性考试模.. 38页

2025年桂林信息工程职业学院单招职业倾向性考.. 38页

2025年武汉海事职业学院单招综合素质考试题库.. 40页

2025年永州师范高等专科学校单招职业适应性测.. 39页

2025年江海职业技术学院单招职业倾向性测试模.. 42页

2025年江苏城市职业学院单招职业倾向性测试模.. 41页

2025年江苏海事职业技术学院单招职业适应性测.. 40页

2025年江苏航空职业技术学院单招职业倾向性测.. 40页

2025年江西新能源科技职业学院单招职业倾向性.. 41页

2025年河北外国语学院单招职业倾向性考试模拟.. 40页

2025年河北机电职业技术学院单招职业技能测试.. 39页

2025年河北科技学院单招职业适应性考试模拟测.. 40页

2025年河南中医药大学单招职业技能测试模拟测.. 40页

2026年上海理工大学单招职业技能测试模拟测试.. 41页

2025年河南推拿职业学院单招职业技能测试模拟.. 41页

2025年河南省信阳市单招职业适应性考试模拟测.. 41页

2025年河源职业技术学院单招综合素质考试模拟.. 41页

数铣工艺绪论 28页

2026年佳木斯职业学院单招职业适应性测试题库.. 42页

2025年济源职业技术学院单招职业倾向性测试题.. 40页

2026年包头职业技术学院单招综合素质考试题库.. 42页

2025年浙江旅游职业学院单招职业倾向性考试模.. 39页

2026年单招医学基础试题及答案1套 44页

2025年浙江省舟山市单招职业倾向性考试模拟测.. 40页

2025年浙江育英职业技术学院单招职业倾向性测.. 40页

2025年广州卫生职业技术学院单招职业技能测试.. 64页

美团代运营业务委托合同 6页

新概念青少版2A各单元重点归纳 15页