在Hibernate中,级联操作可以通过映射关系中的cascade属性实现。主要有以下几种级联方式:
- 保存级联:cascade=”save-update”
- 保存或更新父对象时,也保存或更新子对象。
例如:
<set name="orders" cascade="save-update">
<key column="customer_id"/>
<one-to-many class="Order"/>
</set>
保存Customer对象时,也会保存其关联的Order对象。
- 删除级联:cascade=”delete”
- 删除父对象时,也删除子对象。
例如:
<set name="orders" cascade="delete">
...
</set>
删除Customer对象时,也会删除其关联的Order对象。
- 全部级联:cascade=”all”
- 执行所有的操作级联,包括保存.更新.删除等。
例如:
<set name="orders" cascade="all">
...
</set>
- 级联的定义还可以细致到delete-orphan:
- 当子对象从关联关系中移除时,也执行删除操作。
例如:
<set name="orders" cascade="save-update, delete-orphan">
...
</set>
移除Customer的Order对象时,也会删除该Order对象。