一. 多对一单向关联关系
Order类对于Customer类存在多对一关系,Customer类实例是Order类的一个属性
public class Order implements Serializable{
private Long id;
private String orderNumber;
private Customer customer;
...
}
Order.hbm.xml中就需要配置这种多对一的关系
<hibernate-mapping>
<class name="mypack.Order" table="ORDERS">
<id name="id" type="long" column="ID">
</id>
<property name+"orderNumber" type="string">
<column name="ORDER_NUMBER" length="15" />
</property>
<many-to-one
name="customer"
column="CUSTOMER_ID"
class="mypack.Customer"
not-null="true"
/>
</class>
</hibernate-mapping>
CUSTOMER_ID在数据库表中是一个外键,指向CUSTOMERS(ID)
另外not-null属性是应该特别注意的,它设置为true时,它保证当你保持久化Order实例的时候,customer属性一定已经是被持久化的对象,如果此时customer对象仍是临时对象(只保存在内存中),hibernate将产生异常。
此外,我们可以级联保存和更新Order,在xml中需要做如下设置:
<many-to-one
name="customer"
column="CUSTOMER_ID"
class="mypack.Customer"
cascade="save-update"
not-null="true"
/>
casacade属性默认为none,当被设置成save-update时,你保存更新当前order对象时,hibernate会级联保存和更新相连的customer。