Hibernate 一对一关联映射(主键关联VS唯一外键关联)

阅读更多
一对一关联映射有两种:一种是主键关联,一种是“唯一”外键关联。
主键关联:原理是两张表的主键(ID)保持一致,在获取的时候根据两种表中的ID相同来作为关系判断的标准,这样的设计好处在于我们不用添加另外的字段来维护它们之间的关系。
废话少说,看例子。
在生活一对一的关系还“算”挺多的,比如人与自己的省份证,丈夫和妻子(当然是在符合中国国情的情况下)等等。
第一步:建立两张表。
TABLE:husband
create table husband(
h_id int primary key,
h_name varchar(20)
);

TABLE:wife
create table wife(
w_id int primary key,
w_name varchar(20)
);

注意:这两张表没有使用外键来关联它们。
第二步:建立PO对象。
JAVA PO :HusbandPO.java
package com.lovo.po;
public class HusbandPO {
  private int id;
	
  private String name;
	
  private WifePO myWife; //注意包含了一个妻子对象

  ... other getXX setXX ...
}

JAVA PO :WifePO.java
package com.lovo.po;
public class WifePO {
  private int id;
	
  private String name;
	
  private HusbandPO myHus; //注意包含了一个丈夫对象

  ... other getXX setXX ...
}

第三步:在XX.hbm.xml中配置PO对象属性与数据库表字段的映射。
HusbandPO.hbm.xml

 
	
	
		
			
		
		
		
		
	

WifePO.hbm.xml

 
	
		
			
				
				myHus
			
		
		
		 
	


唯一外键映射:记住是“唯一”,因为一对一是多对一的一种特例,且在hibernate-mapping中是利用来表示,这个时候需要指明该标签的unique="true",这才算是一对一,否则就是多对一。
例子还是使用上面的一一制夫妻关系。
第一步:只需要在两张表的其中一张中加上一个外键,我这里在wife身上加(没有别的意思 )。
TABLE:husband
create table husband(
h_id int primary key,
h_name varchar(20)
);

TABLE:wife
create table wife(
w_id int primary key,
w_name varchar(20),
fk_hus_id int foreign key(fk_hus_id) 
references husband(h_id)
);

第二步:上面是写PO ,这里也不例外,不过PO对象没有改变过哈,这里不复写了。
第三步:XX.hbm,xml配置,配置与上面有所区别,注意啦……
HusbandPO.hbm.xml
 
	
		
			
		
		 
		
		
	


WifePO.hbm.xml

	
		
			
			
		
		
		 
		
	
  • 一对一主键映射示例.rar (1.1 MB)
  • 下载次数: 22
  • 一对一唯一外键关联.rar (1.1 MB)
  • 下载次数: 33

你可能感兴趣的:(Hibernate,XML,SQL,生活)