一 資料關聯
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() ;