实体管理器:操作、同步与状态管理
1. 级联删除操作
级联删除操作在处理实体关系时十分重要。以下是一个启用级联删除的示例代码:
@Entity
public class Employee {
// ...
@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE})
ParkingSpace parkingSpace;
@OneToMany(mappedBy="employee",
cascade={CascadeType.PERSIST, CascadeType.REMOVE})
Collection<Phone> phones;
// ...
}
当处理 Employee 实例时,实体管理器会遍历 parkingSpace 和 phones 关系,并对这些实体实例也调用 remove() 方法。不过,这只是一个数据库操作,对对象实例之间的内存链接没有影响。当 Employee 实例变为分离状态时,其 phones 集合仍会包含 remove() 操作前的所有 Phone 实例。
需要注意的是, remove() 操作只能从父实体安全地级联到子实体。例如,尝试删除
超级会员免费看
订阅专栏 解锁全文

382

被折叠的 条评论
为什么被折叠?



