Hibernate一对多关系

本文记录Java学习过程中遇到的Hibernate一对多关系~

一对多关系的表达

在一的一方的映射文件中,使用<set>标签来描述被映射类中的Set集合,<key>标签的column属性值对应多的一方的外键名称,使用<one-to-many>标签来描述持久化类的一对多关联,其中class属性用来描述映射的关联类;在多的一方的映射文件中,用<many-to-one>标签来表达,name属性用来描述多的一方在一的一方类中的属性名称,class属性用来制定映射的类,column属性对应表中的外键列名。

示例代码:

//一的一方
<set name="linkMans">
	<key column="lkm_cust_id"></key>
	<one-to-many class="domain.LinkMan"/>
</set>

//多的一方
<many-to-one name="customer" class="domain.Customer" column="lkm_cust_id"/>

一对多关系的相关操作

级联操作是指当主控方执行保存、更新或者删除操作时,其关联对象(被控方)也执行相同的操作。在映射文件中通过对cascade属性的设置来控制是否对关联对象采用级联操作,级联操作对各种关联关系都是有效的。

cascade的常见取值如下:

  • none:默认值,不进行级联操作;
  • save-update:级联保存更新;
  • delete:级联删除;
  • all:save-update+delete。

放弃维护关系操作是指放弃外键的维护关系,也就是不再是双方同时维护外键关系,使用inverse属性配置。在一对多关系中,一般是一的一方放弃维护。

inverse的常见取值如下:

  • false:默认值,不放弃维护关系;
  • true:放弃维护关系。

标签: none