初学 hibernate 时是被 hibernate 中的复杂的关系搞得晕头转向。 一对多 ,多对一,多对多。单向,双向等等
问题就出在,找不到参照方物,其实只要找准参照物,各种关系自然迎刃而解。在关系型数据库中 实际上通过主外键只支持多对一,或是一对一单向关联。
1,多对一单向关联 : 以客户表 (customer) 和定单表(orders )为例。一个客户可以发出多个定单,而一个定单只可以属于一个客户。从 orders 到customer 就是 多对一的关系。这就意味着, orders 中应该有一个 Customer类型的属性。
因为在关系型数据库中只有主外键参照关系,而且总是有 many 方参照 one 方,这样可以消除数据冗余。
所以一般是一主键表为参照物。
在hbm.xml 配置时
<many-to-one
name="customer"
column="id"
class="hib.Customer"
not-null="true"
>
name: 指定了持久化类的属性名 (Order类的 customer属性)
column : 指定属性对应的外键 (order表的 customer_id)
class :指定了持久化类的类型。
2,一对多单向关联 :从 customer 到 order 是一对多。意味着每个 customer对象会引用一组order对象。
所以在 customer中应该定义一个集合类型的属性,来关联所引用的 order对象。
hbm.xml 文件配置时
<set
name="orders"
cascade="save-update"
>
<key column ="custome_id" />
<one-to-many class="hib.Order"/>
</set>
name :指定持久化类的属性名 (Customer类的 orders 属性)
<set> : 表明 Customer 类的属性类型为 java.util.Set 类型。
<one-to-many> :表明 orders 集合中存放的是一组 Order对象。
如果一个类关联另一个类,而另一个类不关联这个类。我们就认为这种关联是单向关联
两个类相互包含另一个类的属性时 我们就人认为着种关联是双向关联。
3,一对多双向关联:综合上面两种。
分享到:
相关推荐
Hibernate4中映射关系图解。
详细讲解hibernate的关联关系,以及用实例讲解,非常详细
hibernate的关联关系映射,所有描述以选课系统这个案例来说明
Hibernate_关联关系映射配置
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
针对hibernate中关于对象间的关联关系的配置
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的关联关系,...
hibernate关联关系
Hibernate实体关联关系映射--学习总结,让同仁们更好的学习Hiebernate
介绍使用Hibernate注解来进行关联关系的配置,结合我的博客文章阅读更方便理解。
Hibernate 关联关系映射分类
hibernate项目中简单的关联关系的代码
hibernate里关联关系映射,各种关系解析,帮助大家搞清楚hibernate的关系映射
hibernate实现多对多关联关系源码
Hibernate映射一对多关联关系
hibernate表之间的关联关系在配置文件如何体现
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
Hibernate关联关系练习【全】
映射一对多关联关系 以Customer和Order为例: 一对多: 每个Customer可以有一个或者多个Order,因此Customer中应该有一个集合类型的属性,来引用所有关联的Order对象。 多对一。全实例讲解
NULL 博文链接:https://dreamzhong.iteye.com/blog/1181526