主键关联:原理是两张表的主键(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中是利用
例子还是使用上面的一一制夫妻关系。
第一步:只需要在两张表的其中一张中加上一个外键,我这里在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