两个实体对象之间是一对一的关联映射,即一个对象只能与另外惟一的一个对象相对应。例如:一我的(Person)只有一张身份证(IdCard)。咱们看一下这个例子的对象模型,以下图所示:html
从上图中能够看出:java
一、一我的只有一张身份证,惟一的一个身份证号,对象之间是一对一的关系;app
二、人(Person)持有身份证(IdCard)的引用,因此,两个对象关系维护由person端决定。测试
从对象模型映射成关系模型,有两种方式:主键关联和惟一外键关联,咱们继续看下面的内容。this
一、两个实体对象的主键同样,以代表它们之间的一一对应关系;spa
二、不须要多余的外键字段来维护关系,仅经过主键来关联,即Person的主键要依赖IdCard的主键,他们共用一个主键值。.net
以上两点恰与惟一外键关联相反。hibernate
主键关联的关系模型xml
Person.hbm.xmlhtm
[html] view plain copy
生成的表结构以及测试数据:
一、两个实体对象用一个外键来关联,以表代表对象之间的关系。
二、其实它是多对一关联映射的特例,多的一端加上惟一的限制以后,用来表示一对一的关联关系。
因此它采用多对一的标签来映射,以下所示:
[html] view plain copy
惟一外键的关系模型
Person.hbm.xml
[html] view plain copy
生成的表结构以及测试数据:
其余相同代码以下:
Person
[java] view plain copy
IdCard
[java] view plain copy
IdCard.hbm.xml
[html] view plain copy
因为一对一主键关联映射具备如下两个缺点:
一、灵活性差,没有办法改为多对一关联映射,不能应变多变的需求;
二、必须先保存关联对象IdCard,以后才能保持Person;
因此,在映射一对一单向关联映射时,咱们采用惟一外键关联映射。