当前位置: 首页 > 面试题库 >

JPA中的CascadeType.REMOVE和orphanRemoval有什么区别?

龚浩宕
2023-03-14
问题内容

之间有什么区别

@OneToMany(cascade=REMOVE, mappedBy="customer")
public List<Order> getOrders() { ... }

@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }

此示例来自Java EE教程,但我仍然不了解详细信息。


问题答案:

从这里:

级联删除

用CascadeType.REMOVE(或CascadeType.ALL,包括REMOVE)标记引用字段表示删除操作应自动级联到该字段引用的实体对象(多个实体对象可以被collection字段引用):

@Entity
class Employee {
     :
    @OneToOne(cascade=CascadeType.REMOVE)
    private Address address;
     :
}

移除孤儿

JPA 2支持附加的,更积极的删除级联模式,可以使用@OneToOne和@OneToMany批注的orphanRemoval元素来指定它:

@Entity
class Employee {
     :
    @OneToOne(orphanRemoval=true)
    private Address address;
     :
}

区别:-

两种设置之间的区别在于对断开关系的响应。例如,例如当将地址字段设置为null或另一个地址对象时。

  • 如果指定了 orphanRemoval = true,
    则会自动删除断开连接的Address实例。这对于清理没有所有者对象(例如Employee)的引用不应该存在的依赖对象(例如地址)很有用。
  • 如果仅指定了 cascade = CascadeType.REMOVE, 则不会执行自动操作,因为断开关系不是删除
    操作。




 类似资料:
  • 问题内容: 我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久化到关系数据库的规范。 换句话说,JPA提供接口和其他ORM技术,实现那些称为JPA提供程序的接口,例如Hibernate。 现在,Spring Data JPA到底是什么? Spring Data JPA是否在JPA之上添加了更多功能(接口),并且仍然仅被指定还是JP

  • 我对Spring Data-JPA和JPA之间的区别有点困惑。我知道JPA是一种使用流行的ORM技术将Java对象持久化到关系数据库的规范。 Spring Data JPA是在JPA之上添加了一些更多的功能(接口),还是只指定它还是一个JPA提供程序? 我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错的话)。那么,我的意思是,使用“Spring Data JPA+Hibe

  • 问题内容: 我知道JPA 2是一个规范,而Hibernate是ORM的工具。另外,我了解到Hibernate具有比JPA 2更多的功能。但是从实际的角度来看,真正的区别是什么? 我有使用iBatis的经验,现在我想学习Hibernate或JPA2。我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。例如: 如果您认为某个功能应该被标准化,则应该大声疾呼并向您的JPA提供者提出要求 这使我感到

  • 问题内容: Hibernate和Spring Data JPA之间的主要区别是什么?什么时候不应该使用Hibernate或Spring Data JPA?另外,Spring JDBC模板何时可以比Hibernate / Spring Data JPA更好地执行? 问题答案: Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。没有JPA提供程序,Sprin

  • Hibernate和Spring数据JPA之间的主要区别是什么? 我们什么时候不应该使用Hibernate或Spring数据JPA? 此外,何时SpringJDBC模板可以比Hibernate和SpringDataJPA性能更好?

  • 问题内容: Hibernate中的persist()和merge()有什么区别? 可以创建UPDATE&INSERT查询,例如: 在这种情况下,将生成 查询, 如下所示: 因此方法可以 生成 一个插入和一个更新。 现在: 这是我在数据库中看到的: 现在使用更新记录 这是我在数据库中看到的: 问题答案: JPA规范包含对这些操作的语义的非常精确的描述,比在javadoc中更好: 应用于实体X 的 p