有什么区别
@OneToMany(cascade=REMOVE, mappedBy="customer")
public List<Order> getOrders() { ... }
and
@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }
这个例子来自Java EE教程,但我仍然不明白细节。
From here:-
级联删除
使用 CascadeType.REMOVE(或 CascadeType.ALL,
其中包括 REMOVE)表示删除操作应该是
自动级联到所引用的实体对象
field(集合可以引用多个实体对象
场地):
@Entity
class Employee {
:
@OneToOne(cascade=CascadeType.REMOVE)
private Address address;
:
}
孤儿剔除
JPA 2 支持额外的、更积极的删除级联模式
可以使用 orphanRemoval 元素指定
@OneToOne 和 @OneToMany 注释:
@Entity
class Employee {
:
@OneToOne(orphanRemoval=true)
private Address address;
:
}
不同之处:-
两种设置之间的差异在于响应
断开关系。例如,当设置
地址字段为空或另一个地址对象。
- If 孤儿移除=true指定断开连接的 Address 实例将自动删除。这对于清理很有用
没有一个就不应存在的依赖对象(例如地址)
来自所有者对象(例如 Employee)的引用。
- If only 级联=CascadeType.REMOVE指定不采取自动操作,因为断开关系不是删除
手术。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)