Hibernate(五)一对一单向关联映射

上次的博文中 Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来 我们会讲稍微复杂点的映射——关系映射。

关系映射分类

关系映射即在基本映射的基础上处理 多个相关对象和多个相关表之间联系的映射。关系映射从对应关系的角度可以分为如下七种类型:一对一单向关联 一对一双向关联 一对多单向关联 多对一单向关联 一对多双向关联 多对多单向关联

多对多双向关联

接下来博客,我们会分别讲解一下这七种关系映射。今天我们只讲其中的一对一单向关联。

一对一 单向关联

一对一单向关联从对象的角度分析,即在一个对象(Person)中存在另一个对象(IdCard)的引 用,而在另一个对象(IdCard)中则不存在该对象(Person)的引用,这样就可以在加载该对象(Person)的时候找 到另一个对象(IdCard)。类结构图如下所示:

具体代码如下所示:

public class Person {  
    private int id;           
    private String name;              
    private IdCard idCard;  
          
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public IdCard getIdCard() {  
        return idCard;  
    }  
    public void setIdCard(IdCard idCard) {  
        this.idCard = idCard;  
    }  
}  
      
public class IdCard {             
    private int id;           
    private String cardNo;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getCardNo() {  
        return cardNo;  
    }  
    public void setCardNo(String cardNo) {  
        this.cardNo = cardNo;  
    }  
}


上述类结构的相应根据关联的策略不同会生成不同的表结构,可以分为主键关联和唯一外键关联。

 

主键关联

主键关联表结构如下:

可以看出,主键关联即利用主 键进行关联,关联主键的值相同。其相应的*.hbm.xml配置文件代码如下:

<class 

name="com.zs.hibernate.IdCard" table="t_idCard">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="cardNo"/>  
</class>  
      
<class name="com.zs.hibernate.Person" table="t_person">  
    <id name="id">                          
        <generator class="foreign">                             
            <param name="property">idCard</param>  
        </generator>  
    </id>  
    <property name="name"/>  
    <one-to-one name="idCard" constrained="true"/>  
</class>

唯一外键关联

唯一外键关联表结构如下:

与主键关联所不 同,唯一外键关联除主键外,在其一对一的指向端(Person)存在一个唯一外键,该唯一外键与被指向端 (IdCard)相关联,关联主键的值相同。其相应的*.hbm.xml配置文件代码如下:

<class 

name="com.zs.hibernate.IdCard" table="t_idCard">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="cardNo"/>  
</class>  
      
<class name="com.zs.hibernate.Person" table="t_person">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <many-to-one name="idCard" unique="true"/>  
</class>

同之前的基本映射一样,我们同样可以利用注解对类带进行相关配置,这里我们就 不做过多的介绍了。还是之前说过的,要想了解注解和XML相关配置的具体内容,建议大家找一本相关书籍进 行详细阅读。

到此为止关于一对一单向关联我们就已经讲完了,下次我们继续讲解关系映射中的一对 一双向关联。

posted @   不少年  阅读(345)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示