hibernate 数据关联(一对一关联)

本文详细介绍了Hibernate中的一对一关联映射,包括主键关联和唯一外键关联。通过具体示例展示了如何在映射文件和实体类中设置关联,并提供了测试代码进行操作演示。
摘要由CSDN通过智能技术生成

一 数据关联

 

  1  一对一关联

      该类型包括两种(1) 主键关联 , (2)唯一外键关联。

 

 a 主键关联

 

         两张表通过主键关系形成一对一的映射。 一个典型的主键关联实例,用户和护照。用户只有一个护照,一本护照页只有

一个主人。在hibernate 中通过 One-to-one节点对一对一的关系进行描述。

 

    passport的映射文件中 ,节点为:

 

        <class name="cn.bupt.duming.vo.Passport" table="passport" catalog="login">
    
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="foreign" >
            <param name="property">user</param>
            </generator>
        </id>
        
                
        <property name="serial" type="java.lang.String">
            <column name="serial" length="20" />
        </property>
        
        <property name="expiry" type="java.lang.Integer">
            <column name="expiry" />
        </property>
        
           <one-to-one name="user" class="cn.bupt.duming.vo.User" constrained="true"
        />
    </class>

 

user 的映射文件 ,节点为:

 

 <class name="cn.bupt.duming.vo.User" table="user" catalog="login">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
        </id>
        <property name="age" type="java.lang.Integer">
            <column name="age" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="name" length="20" />
        </property>
            
            <one-to-one name ="passport" class="cn.bupt.duming.vo.Passport"
            cascade ="all" outer-join="true">
            
            </one-to-one>
       
    </class>

 

 

(2) 实体类中也应该存在关联关系

 

   public class Passport implements Serializable {
 
    private int id  ;
   
    private String serial ;
   
    private int expiry ;
   
    private User user ;

 

}

 

  在passport类中拥有user类的实例 , 同样在user类的事例中存在passport的实例。

 

 

 

 

 

(3)测试代码

 

   User user = new User() ;
       
        user.setAge(20) ;
       
       
        user.setName("jake") ;
       
        Passport passport = new Passport() ;
       
        passport.setExpiry(3) ;
       
        passport.setSerial("CA4545") ;
       
        passport.setUser(user) ;
       
        user.setPassport(passport) ;
       
        Transaction tc = session.beginTransaction() ;
       
        session.save(user) ;
       
        tc.commit() ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值