浅谈Hibernate之照射一对多关联关系

浅谈Hibernate之映射一对多关联关系

需求:

       客户(Customer)和订单(Order):一个客户可以有多个订单,而一个订单只属于一个客户。

 

如何描述这种关联关系:

    (1)在Order类中加入所属的Customer属性     从Order到Customer是多对一的关系

    (2)在Customer类中加入所有订单的集合属性  从Customer到Order是一对多的关系

 

关联关系:

    单向关联:以上两种单独存在

    双向关联:以上两种同时存在

 

数据库关联关系:

    由于数据库结构,只存在多对一(例:Order中加入所属Customer(第一种))或者一对一的单向关联关系。    注:数据库中没有类似于集合类型字段,所以第二种一对多不会存在。

在hibernate中的关联关系:

    映射多对一单向关联关系:

   多对一单向关联关系是关系数据库中的外键参照关系最匹配。Customer类和表中无需加入任何关于Order的信息,只是在Order持久化类中加入Customer customer属性,在映射文件中加入下面代码:

<many-to-one name="customer" colum="CUSTOMER_ID" class="mypack.Customer" not-null="true" lazy="false" />

    映射一对多双向关联关系(多对一双向关联关系):

    映射一对多双向自身关联关系: