【Hibernate步步为营】--双向关联一对一映射详解(一)

         一对一的映射在对象模型中是经常见到的,为了将对象模型转换为关系模型就必须在映射文件中进行配置,上篇文章讨论了一对一映射的单向关联的情况,重点是<one-to-one>标签的使用,需要在映射的主对象中添加该标签,并将该对象的主键设置为foreign这样就实现了主键关联映射。讨论完了单向接下来讨论双向映射。


一、双向主键关联


        双向的主键关联其实是单向一对一主键关联的一种特殊情况,只不过要在关联对象的两端的映射文件中都要进行<one-to-one>的配置,另外还要在主映射的主键一端采用foreign外键关联属性。

        这里同样使用Person和IdCard来讨论,一个人对应着一个唯一的身份证,而且一个身份证也唯一映射着一个人,所以这就产生了双向的关联关系,Person的主键同样也是IdCard的主键,分别是主键的同时也是外键,这种关联关系成为双向一对一映射,表现到关系模型中可如下图:


        图中的两个表采用了主键关联,person的主键是idCard的主键,所以它们之间构成了朱外键的约束关系,并且保证唯一性,映射到对象模型中,转变为person类和idCard类的一对一关系,如下图:


        这种一对一的关系上篇文章中也有讲到用的是<one-to-one>标签,另外这种一对一映射又是双向的,所以要在两个对象之间同时配置<one-to-one>,首先来看idCard对应的类代码和映射文件代码。


   1、IdCard对应的信息

        IdCard.java类,IdCard类和Person类之间有一对一的关联关系所以要在IdCard类中添加对应的Person属性,这是为了能在映射文件中的外键中添加对应的属性,设置对应的外键关联类。

package com.src.hibernate;

public class IdCard {
	
	//id属性
	private int id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	//卡号属性
	private String cardNo;
	public String getCardNo() {
		return cardNo;
	}
	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}
	
	//卡号对应的人
	private Person person;
	public Person getPerson(){
		return pe
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值