`
yangmeng_3331
  • 浏览: 91198 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Hibernate中cascade与inverse

阅读更多
cascade:
     当Hibernate持久化一个"自由态对象"时,在默认的情况下(没有设置cascade或cascade=none时),Hibernate不会自动持久化他所关联的其他临时对象。在cascade="save-update"或者cascade="all"时,当Hibernate向数据库表中插入"新"对象记录时,会检查该对象所关联的属性是否发生变化,如果发生变化,就按照级联属性(cascade)所设定的内容进行操作。

如一个person类和一个QQ类,他们是one-to-many的关系。person类中qqs属性对应配置文件set的cascade属性设为cascade="save-update"。
Person p = new Person();
p.setName("zhangsan");

QQ qq = new QQ();
qq.setNum("1111");
qq.setPerson(p);

p.getQqs().add(qq);

getSession().save(p);


inverse
     在Hibernate执行getSession().save(p)这段代码时通过show_sql开启显示sql语句功能,那么控制台将会显示3条sql语句。
     第一条是将新的数据插入person,第二条是插入qq,而第三条是一条update语句。
     我们先来看一下数据库,在person表和qq表中,qq表是外键表,qq表中的person_id是外键,即两表存在主外键关联。
    当调用p.getQqs().add(qq)方法,进行添加时,Hibernate怕在进行p.getQqs().add(qq)这样的操作时出现意外情况,即添加方(qq)和被添加方(p)存在外键不一致的情况。所以就会出现那条更新语句。
    inverse的默认值为false,所以inverse属性默认会进行“关联更新”。inverse值为true,会放弃“关联更新”。
    通俗点讲,将inverse设为false的那一方,意思就是你添加完信息后我还要来维护一下,所以会出现update语句,如果将inverse设为true的话,意思就是我完全相信你,你添加后我就不需要在维护了,所以不会出现update语句。
   
   
分享到:
评论

相关推荐

    Hibernate中cascade与inverse属性详解

    Hibernate中cascade与inverse属性详解

    Hibernate中cascade和inverse应用

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

    hibernate 级联(cascade和inverse)一对多

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

    hibernate inverse和cascade的详细讲解

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

    关联映射cascade,inverse讲解

    在Java持久化框架Hibernate中,关联映射是数据库表之间的关系在对象模型中的体现,它使得我们可以方便地处理对象与数据库之间的数据交互。本篇将深入讲解“cascade”和“inverse”这两个重要的概念,以及它们在实际...

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

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    Hibernate中Inverse和Cascade的区别.html

    Hibernate中Inverse和Cascade的区别.html

    inverse和cascade使用阐述

    在压缩包文件“inverse_cascade”中,可能包含了与这个主题相关的代码示例、教程文档或者其他资源。这些文件可能帮助读者更深入地理解这两个概念,并能动手实践,从而更好地掌握在实际项目中如何应用“inverse”和...

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

    在深入探讨Hibernate集合映射中的`inverse`与`cascade`属性之前,我们首先需要理解Hibernate框架的基本概念。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库...

    关于cascade和inverse属性[文].pdf

    总结起来,`cascade`和`inverse`是Hibernate中用于管理对象关联关系的重要属性,它们共同确保了数据的一致性和操作的便捷性。在实际应用中,需要根据业务逻辑和性能需求,合理设置这两个属性,以达到最佳的数据库...

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

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

    JavaEE学习笔记之Hibernate表关系之一对多(inverse详解)

    1. **关联的插入和更新**:在一对多关系中,如果设置`inverse="true"`,那么在保存或更新父实体时,Hibernate会自动处理与子实体的关联,添加新的子实体或更新已存在的关联。相反,如果在子实体上操作,Hibernate将...

    Hibernate学习笔记和资料

    hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    Hibernate开发租房系统2 源码

    描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...

    Hibenate cascade

    在Hibernate中,`cascade`和`inverse`是两个重要的概念,它们涉及到对象之间的关系管理和数据持久化。 **1. Hibernate Cascade** `cascade`属性主要用于控制对象间的级联操作。当在主对象上执行保存、更新、删除等...

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

    Hibernate常见问题

    理解并正确使用Hibernate的`cascade`和`inverse`属性对于优化数据操作和避免数据一致性问题至关重要。在实际开发中,应根据业务逻辑和数据模型谨慎设定这些属性,以确保数据操作的正确性和高效性。

    inverse 例子

    在Hibernate这个强大的对象关系映射(ORM)框架中,`inverse`属性是一个非常重要的概念,它主要用于管理关联关系的维护责任。在这个例子中,我们将会深入理解`inverse`属性的作用,并通过一个简单的测试案例——`...

Global site tag (gtag.js) - Google Analytics