浅谈Hibernate之照射一对多关联关系
浅谈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" />
映射一对多双向关联关系(多对一双向关联关系):
映射一对多双向自身关联关系: