`
Wind_ZhongGang
  • 浏览: 264737 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate cascade在不同关联关系中的具体表现

阅读更多

 

  在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当前实体时,针对当前实体的操作会影响到相应配置的关联实体。比如针对当前实体进行保存操作时,会同时保存与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了Cascade属性。而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作,具体Cascade的取值则分为多种,如all,表示针对所有操作都会进行级联,如save-update,表示针对插入和修改会进行级联操作。对于Cascade的取值问题需要根本具体需求而定,这里没有一个统一的标准应该取怎样的值符合你的需要。从现实需求分析来决定应该如何取值。

 

  这篇博文的主要目的当然不是在这里说明应该Cascade的取值问题,而是想在这研究讨论在进行级联删除操作时,在不同的关联关系中,级联删除的不同行为。我们知道对于关联关系的种类来说,主要分为一对一,一对一,一对多这三种,经过研究实践,我发现在Hibernate中,针对级联的操作针对不同的关联关系会有不同的行为表现。

 

  在一对一关联关系中,当删除当前实体时,会同时级联删除关联实体,以解除两者的关联关系。

 

  在一对多关联关系中,当删除一方实体时,会同时级联删除多方实体,以解除两者的关联关系。

 

  在多对多关联关系中,根据我们对于多对多关联关系的不同处理情况,相应的级联删除行为会有所不同,如果将多对多的关联关系处理为两个一对多的关联关系时,也就是说这时存在一个中间实体用以表明两者的多对多关联关系,那么在删除其中一方实体时,相应的级联删除操作并不会直接删除中间实体,也就是两者的关联关系,而是在中间实体中将其中一方设置为NULL,这样两者的关联关系就相应的解除了,而如果我们将多对多关联关系不作特殊处理,将之当作纯粹的多对多关联关系,也就是说没有相应的中间实体,而只是在数据库中保持一个中间表来维护两者的关联关系,那么当我们在删除一方实体时,会相应的将数据库中的中间表的相应数据给直接删除掉。

 

  上传的附件是我为上述各种处理情况写的一个DEMO,里面有详细的测试,运行测试即可轻易得出上述结论,在此供大家参考批评指正。

0
0
分享到:
评论

相关推荐

    Hibernate教程15_关联关系中的CRUD Cascade_Fetch

    标题"Hibernate教程15_关联关系中的CRUD Cascade_Fetch"主要关注两个核心概念:关联关系和它们在创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作中的级联(Cascade)以及懒加载和立即加载(Fetch...

    Hibernate cascade (级联).doc

    在 Hibernate 中,级联(Cascade)是一种非常有用的功能,它能够帮助开发者在处理实体之间的关联时自动执行一系列相关的操作。通过级联,当对一个实体执行某些操作时,这些操作也会自动地应用到与之关联的其他实体上...

    hibernate一对一关联关系

    一对一关联关系在现实世界中很常见,比如一个人只有一个身份证,或者一个公司的总部只有一个。在Hibernate中,设置一对一关联关系可以帮助我们更好地管理和操作这些具有唯一对应关系的数据。 1. **配置一对一关联**...

    hibernate cascade 测试demo

    本测试Demo主要目的是帮助我们理解如何在Hibernate中使用`cascade`属性来处理关联对象的数据操作。让我们深入探讨一下`cascade`的含义及其在实际开发中的应用。 `cascade`在Hibernate中的作用是当对一个实体进行...

    Hibernate集合映射与关联关系

    在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合...

    hibernate关联关系总结

    Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...

    Hibernate映射一对多关联关系

    使用Hibernate进行一对多关联关系的映射,主要通过在XML映射文件中定义 `<many-to-one>` 和 `<set>` 标签来实现。 ##### 映射 `Order` 类 ```xml ``` 在上面的映射文件中: - `<many-to-one>` 元素...

    hibernate_配置cascade_及all-delete-orphan.doc

    在Hibernate框架中,cascade选项提供了一种管理实体间关联的便捷方式,使得对一个实体的操作能够自动地应用到与之相关的其他实体上。这对于处理复杂的数据库关系非常有用,可以极大地简化代码,并减少出错的可能性。...

    hibernate各种常用关联关系的基本配置

    在Java的持久化框架Hibernate中,对象关系映射(ORM)是其核心功能之一,它允许开发者用面向对象的方式处理数据库操作。关联关系是ORM中关键的概念,它模拟了现实世界中的实体之间的联系。本篇文章将深入探讨...

    hibernate实现多对多关联关系源码

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联关系是一种常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联,反之亦然。本源码示例将深入探讨如何使用Hibernate来配置和管理这种复杂的...

    Hibernate多对多关联关系demo

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联关系是一种常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联,反之亦然。本示例"Hibernate多对多关联关系demo"将深入探讨如何在实际开发中...

    Hibernate关联关系

    本节将主要介绍一对多和多对一这两种常见的关联关系及其在Hibernate中的实现方式。 #### 多对一关联关系 多对一关联关系表示多个实体可以关联到一个实体。在Hibernate中,可以通过`<many-to-one>`标签来实现这种...

    hibernate多对一关联关系

    在Java的持久化框架Hibernate中,"多对一"关联关系是一种常见的对象关系映射(ORM)设计,它表示一个实体(子项)可以与多个其他实体(父项)相关联,而每个父项可能被多个子项引用。在数据库层面,这通常对应于一个...

    Hibernate 多对一关联关系的例子

    本示例将深入探讨如何在Hibernate中实现多对一的关联关系。 首先,让我们理解多对一关联的基本概念。假设我们有两个实体,一个是`Employee`(员工),另一个是`Department`(部门)。在实际业务场景中,一个部门...

    hibernate外键实现一对一单向关联关系源码

    在本主题中,我们将深入探讨如何利用Hibernate实现一对一(One-to-One)单向关联关系,并通过源码分析来理解其工作原理。 **一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能...

    hibernate的关联关系映射

    【hibernate的关联关系映射】在Java持久化框架Hibernate中,关联关系映射是核心功能之一,它允许对象间的复杂关系与数据库中的表结构相匹配。在选课系统这个例子中,主要涉及到的对象包括课题(Course)、教师(Teacher...

    Hibernate关联关系练习【全】

    关联关系在查询中尤为重要,例如,可以通过fetch方式进行懒加载或立即加载关联对象。懒加载意味着关联的对象在需要时才会从数据库中获取,而立即加载则会在主对象加载时一同加载关联对象,这可以通过@ManyToOne或@...

    hibernate关联关系实例

    在这个“hibernate关联关系实例”中,我们将深入探讨四种基本的关联关系:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many),同时也会涉及Hibernate查询语言(HQL)...

    hibernate组件之间的关联

    在 Hibernate 中,组件之间的关联是实现对象模型与数据库表之间映射的关键部分,它包括了一对一、一对多、多对一、多对多等多种关联类型。本篇文章将深入探讨 Hibernate 组件之间的关联机制及其应用。 **一对一关联...

Global site tag (gtag.js) - Google Analytics