Hibernate中如何实现级联操作?代码举例讲解

在Hibernate中,级联操作可以通过映射关系中的cascade属性实现。主要有以下几种级联方式:

  1. 保存级联:cascade=”save-update”
  • 保存或更新父对象时,也保存或更新子对象。

例如:

<set name="orders" cascade="save-update">
    <key column="customer_id"/>
    <one-to-many class="Order"/>
</set>

保存Customer对象时,也会保存其关联的Order对象。

  1. 删除级联:cascade=”delete”
  • 删除父对象时,也删除子对象。

例如:

<set name="orders" cascade="delete">
    ...
</set>

删除Customer对象时,也会删除其关联的Order对象。

  1. 全部级联:cascade=”all”
  • 执行所有的操作级联,包括保存.更新.删除等。

例如:

<set name="orders" cascade="all">
    ...
</set>
  1. 级联的定义还可以细致到delete-orphan:
  • 当子对象从关联关系中移除时,也执行删除操作。
    例如:
<set name="orders" cascade="save-update, delete-orphan">
    ...
</set>

移除Customer的Order对象时,也会删除该Order对象。