`

Hibernate 中级联操作 cascade 选项

阅读更多

none :在保存、更新或删除对象时,忽略其他关联的对象。他是 cascade 属性的默认值。

save-update :当通过 Session 的 save() 、 update() 以及 saveOrUpdate() 方法保存或更新当前对象时,级联保存所有关联的新建的临时对象,并且级联更新所有关联的游历对象。

delete :当通过 Session 的 delete() 方法删除当前的对象时,级联删除所有关联的对象。

all :包含 save-update 以及 delete 的行为。此外,对当前对象执行 evict() 或 lock() 操作时,也会对所有关联的持久话对象执行 evict() 或 lock() 操作。

delete-orphan :删除所有和当前对象解除关联关系的对象。

all-delete-orphan :包含 all 和 delete-ophan 。

注意,很多人在使用 Session 对象的 delete() 方法时,设置了 <set cascade=”delete”> ,如下示例删除图书的一个分类:

Category c = new Category();

c.setId(11);

session.delete(c);

结果没有任何动静,那是因为删除操作没有放在一个事务里面。

Transaction tran = session.beginTransaction();

Category c = new Category();

c.setId(11);

session.delete(c);

tran.commit();

加了事务后,能够删除分类表的数据了。但是对应此分类的图书的数据却只是将关联的分类 ID 修改为了 null, 并没有真正删除。这是为什么呢?主要就是因为我们这里的 Category 对象只是一个临时对象。它在删除之前会被持久化,但它所关联的图书对象却不会被自动持久化。那如何是好?我们修改一下实现代码:

Transaction tran = session.beginTransaction();

Category c = (Category) session.get(Category.class, 11);

session.delete(c);

tran.commit();

这样子就能够级联删除分类和此分类下的图书数据了。

 

分享到:
评论

相关推荐

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

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

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

    其中,Cascade属性是Hibernate提供的一种强大的功能,它允许我们在操作一个实体对象时,自动对与之关联的其他对象进行相同的操作。这篇文章将深入探讨Hibernate cascade在不同关联关系中的具体表现。 1. **一对一...

    Hibernate中Inverse和Cascade的区别.html

    Hibernate中Inverse和Cascade的区别.html

    hibernate 级联(cascade和inverse)一对多

    在Java的持久化框架Hibernate中,级联操作(Cascade)和反转(Inverse)是两个重要的概念,它们主要用于管理对象关系模型中的关联关系。在一对多的关系中,这些特性可以帮助简化数据操作,提高代码的可读性和维护性...

    hibernate cascade 测试demo

    在Java的持久化框架Hibernate中,`cascade`是一个非常重要的概念,它涉及到对象关系映射(ORM)中的数据操作传播性。本测试Demo主要目的是帮助我们理解如何在Hibernate中使用`cascade`属性来处理关联对象的数据操作...

    Hibernate cascade (级联).doc

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

    hibernate inverse和cascade的详细讲解

    ### Hibernate Inverse 和 Cascade 的详细讲解 #### 一、引言 在ORM(Object-Relational Mapping)领域,Hibernate作为一款流行的Java持久层框架,它提供了丰富的API和配置选项来帮助开发者实现对象与数据库表之间...

    Hibernate的级联操作(增,删,该)

    除了上述常见的级联类型,Hibernate还提供了其他的级联选项,如`CascadeType.REFRESH`用于刷新关联对象的状态,`CascadeType.DETACH`用于断开与Session的关联,以及`CascadeType.HALF`等更复杂的级联行为。...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    通过对Hibernate中级联操作和控制权反转的理解和应用,我们可以更灵活地管理和操作数据库中的关联数据。级联操作简化了关联对象的处理逻辑,而控制权反转则有助于清晰地区分谁负责维护关联关系。在实际开发中,合理...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    - **级联操作**:在多对一关系中,可以通过设置级联选项来自动执行某些操作,例如保存或更新相关实体。但是,在实际开发中并不推荐这样做,因为这会降低系统的灵活性和可控性。 #### 二、Cascade (级联) 级联操作...

    Hibernate中cascade和inverse应用

    在 Hibernate 框架中,`cascade` 和 `inverse` 是两个重要的概念,它们主要用于管理对象之间的持久化关系,特别是涉及到一对一(one-to-one)、一对多(one-to-many)和多对多(many-to-many)关系时。这两个属性都...

    Hibernate中cascade与inverse属性详解

    Hibernate中cascade与inverse属性详解

    hibernate集合映射inverse和cascade详解.txt

    在Hibernate中,当执行某些操作(如保存、删除或更新)时,可以使用`cascade`来决定这些操作是否应该级联到关联的实体上。 #### 1. `cascade`的类型 - `CascadeType.PERSIST`:允许在保存父实体时,自动保存关联的...

    Hibenate cascade

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。在Hibernate中,`cascade`和`inverse`是两个重要的概念,它们涉及到对象之间的关系管理和数据持久化。 **1. ...

    hibernate

    ### Hibernate Cascade 级联操作 `Cascade`是Hibernate中的一个非常有用的功能,它允许将某些操作级联到关联的实体上。例如,当你保存一个主实体时,可以通过配置`cascade`选项来自动保存关联的子实体。常见的`...

    详解Hibernate cascade级联属性的CascadeType的用法

    详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c

    Hibernate级联操作一对多demo

    在Java持久化框架Hibernate中,级联操作是处理对象关系映射(ORM)时非常重要的一个特性。级联操作允许我们在对一个实体进行操作时,自动地影响与之相关的其他实体,无需显式地处理这些关联。在这个" Hibernate级联...

    Hibernate级联操作.docx

    在 Hibernate 中,级联操作(Cascade)和反向属性(Inverse)是管理对象关系的重要概念,特别是在处理一对多(One-to-Many)或多对一(Many-to-One)关系时。 **级联操作(Cascade)** 级联操作定义了当主对象被...

Global site tag (gtag.js) - Google Analytics