天天看點

hibernate 資料關聯(一對一關聯)一 資料關聯

一 資料關聯

  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() ;

繼續閱讀