hibernate级联操作详解

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

级联操作

 一.简单的介绍

cascade和inverse (Employee – Department)

l  Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:

         none,all,save-update,delete, lock,refresh,evict,replicate,persist,

         merge,delete-orphan(one-to-many)。一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。

l  inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。

         one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。

         注: 配置成one-to-one的对象不维护关联关系

二,属性的解析
class元素的lazy属性设定为true,表示延迟加载,如果lazy设为false,则
表示立即加载。以下对这二点进行说明。
     立即加载:表示Hibernate在从数据库中取得数据组装好一个对象(如学生1)后,
            会立即再从数据库取得数据组装此对象所关联的对象(如学生证1)。
     延迟加载:表示Hibernate在从数据库中取得数据组装好一个对象(如学生1)后,
            不会立即再从数据库中取得数据组装此对象所关联的对象(如学生1),
            而是等到需要时,才会从数据库取得数据组装此关联对象。
<one-to-one>元素的cascade属性表明操作是否从父对象级联到被关联的对象,     它
的取得可以是以下几种:
     none:在保存,删除或修改当前对象时,不对其附属对象(关联对象)进行级联
          操作。它是默认值。
     save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,
          游离对象)。
     delete:在删除当前对象时,级联删除附属对象。
     all:所有情况下均进行级联操作,即包含save-update和delete操作。
     delete-orphan:删除和当前对象解除关系的附属对象。
<one-to-one>元素的fetch属性的可选值是join和select,默认是select。
当fetch属性设定为join时,表示连接抓取(Join fetching):Hibernate通过
在Select语句中使用outer join(外连接)来获得对象的关联实例或者关联集合。
当fetch属性设定为select时,表示查询抓取(Select fetching):需要另外发
送一条Select语句抓取当前对象的关联实体或集合。

三。代码练习

<set name="emps" cascade="save-update">
 <key column="depart_id"/>
  <one-to-many class="Employee"/>
</set>

<set name="students" table="taacher_student" inverse="true"><!-- table是用来指定中间表的属性 -->
<key column="teacher_id"></key><!-- 查找教师id时,链接中间表表的teacher_id -->
<many-to-many class="Student" column="student_id"></many-to-many>
</set>


hibernate简介 前言 Hibernate(冬眠):开源免费的持久层框架www.hibernate.com、Hibernate之父 Kavin King 类似持久层框架:Ibatis TopLink 实现: 1、软件的核心是数据 2、数据存在形式:一种是存在内存中,瞬时的 另一种存在硬盘上的,持久的 Object RelationShipMapping ORM(Object RelationShi... 阅读详情

相关推荐

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

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

Hibernate级联操作

Hibernate 级联操作 1、⼀对多关系 客户和订单:客户可以购买多个产品,⽣成多个订单,但是⼀个订单只能属于⼀个客户 数据库中⼀的⼀⽅是主表,多的⼀⽅时候从表,通过主外键关系来维护。 Customer @Data public class Customer { private Integer id; private String name; private Set<Orders> orders; } Orders @Data public class Orders { private

weixin_47619153的博客 536

Hibernate级联、检索的简单理解

Cascade(级联)是一种配置选项,用于指定当对一个对象进行操作时,是否要同时对与之相关联的其他对象进行相同的操作。Cascade可以应用于关联关系(Association)中的父子对象,例如一对多(OneToMany)、多对一(ManyToOne)、一对一(OneToOne)等。通过配置Cascade属性,可以实现对关联对象的级联操作。常见的Cascade选项包括:CascadeType.ALL:表示对关联对象执行所有操作,包括创建、更新和删除。

X2822889732的博客 756

Hibernate-级联操作

Hibernate 级联操作 关联关系 【1】一对多关系 一的一方是主表,多的一方是从表,通过主外键维护 @Data public class Customer{ private int id; private String name; private Set<Orders> orders; } @Data public class Orders{ private int id; private String name; private Customer cu

qq_41607217的博客 323

Hibernate级联操作

Hibernate级联操作 所谓的级联操作Hibernate支持根据配置的关联关系,实现通过一个实体类的对象,可以操作多个表的数据。(操作:增删改)。我们将这个现象称为级联操作。 配置级联操作的属性: - cascade用于启动级联操作 - save-update:启动级联保存和更新 - detele:启动级联删除 级联增加 配置步骤: 1. 配置关联关系支...

Kato_op的博客 1555

hibernate级联操作

hibernate级联操作hibernate操作中可以进行级联操作来避免对关联对象的重复操作。 hibernate中的持久化的操作都对应了相应的级联风格。 merge()-----merge delete()----delete saveOrUpdate()----save-update refresh()---refresh evict()---evict在配置文件中默认的时none,

small_love的专栏 1054

Hibernate级联操作详解(转)

出自:http://blog.csdn.net/geminiroy/article/details/5413913   save-update: 级联保存(load以后如果子对象发生了更新,也会级联更新). 但它不会级联删除 delete: 级联删除, 但不具备级联保存和更新 all-delete-orphan: 在解除父子关系时,自动删除不属于父对象的子对象, 也支持级联删除和级联保存更

1044

HIbernate--多对多的级联操作(保存、更新、删除)详解

级联操作 多对多的级联操作同一对多和多对一是一样的。如果只保存单独的一方是不可以的,还是需要保存双方的。如果想保存一方就需要设置级联操作。同样需要设置主控方。 创建表 创建sys_user、sys_role、sys_user_role三张表: 创建实体 User: public class User { //主键 private Long user_id; private String u...

吴声子夜歌的博客 1396

hibernate中关系操作(inverse)和级联操作(cascade)详解

以用户、角色、用户文件为例讲解inverse(关系操作)和(cascade)操作 inverse 取值 true(不维护关系)或false(维护关系  默认为false) 该属性主要操作的是外键 cascade 取值null(默认值)、save-update 、all 、delete 用户、角色是多对多的关系 用户的映射文件表示: 。。。。。 inverse="tru

zcl1199的博客 2151

Hibernate_2_Hibernate中对象状态及转化_一级缓存_Session详解_HQL/SQL/Criteria_一对多关系_级联操作

Hibernate中的对象状态 在Hibernate中持久化对象具有三种状态: 瞬时态, 持久态, 游离态. 瞬时态: 对象没有与Hibernate产生关联(transient,session中没有缓存), 数据库中也没有对应记录 => 对象无id, 没有关联 持久态: 对象与Hibernate产生关联(persistent, session中有缓存), 数据库中会存在记录 => ...

菜鸡逆袭的博客 247

JAVAEE学习——hibernate03:多表操作详解级联、关系维护和练习:添加联系人

一、一对多|多对一 1、关系表达  表中的表达      实体中的表达      orm元数据中表达     一对多 <!-- 集合,一对多关系,在配置文件中配置 --> <!-- name属性:集合属性名 column属性: 外键列名 ...

depiaozhanyou66348的博客 144

Hibernate框架学习

  什么是框架 框架就是一个半成品的项目,我们书写项目可以从半成品的项目开始写,这样能够大大的提高开发效率。 不必纠结于框架本身的实现,只要学会如何使用这个框架即可。 什么是Hibernate框架 这个框架应用于DAO层 ORM:Object relaction mapping 实体类和数据表之间建立了联系,通过操作对象,直接对数据库进行修改。     Hibernat...

weixin_41546357的博客 404

Hibernate 下实现数据的级联插入

在上一篇文档中,主要讲了如何在myeclipse中部署一个Hibernate项目,在本文中主要实现数据的级联插入,下面模拟的场景是,用户有多个订单,在插入用户的时候,将用户的订单添加到订单表中。      下面是User 和 Order两个pojo类的代码          public class Order { private int id; private int wh

行者歌于途 1596

Hibernate——关系映射之多对一与一对多 & 懒加载 & 级联操作

Hibernate中,两个相互有关联的数据库表在配置的时候需要额外的配置。 关系映射之多对一 多对一的经典案例:老师 &lt;–&gt; 部门,即一个老师只能对应一个部门,而一个部门对应多个老师。 下面通过示例说明多对一的关系。创建项目HibernateManyToOne。 1.首先创建Teacher对象和Department对象。 package com.gavin.doma...

Gavin 2449

Hibernate一对多级联操作

使用hibernate对mysql进行一对多的级联增删查改操作: 一方为产品的分类(Category.java),多方为具体的产品(Product.java) JavaBean(一方): package com.yi.entity; import java.util.HashSet; import java.util.Set; /* * 一方 */ public class

未来 4885

HIBERNATE多对多配置

HIBERNATE多对多配置实例 1. 环境,student对lesson,多对多的关系,关系表格:student_lesson(student_id,lesson_id) 2. 配置文件 1) student设为关联维护端 2) lesson设为逆向关联端 3. 推荐设置 一般的将教为主动的一端,配置为关联正向端,本例中学生比课程更为主动,一般不使用 cascade=”true”选项,因为课程不以学生而存在,增加学生时候不会处理课程资料只处理学生和课程的关系,因此 inv

排骨要加油 931

Hibernate的关联映射

一. 多对一 例如:人>>>>组 java类当中 数据库中:在多的一端维护一个多指向一的关系,数据库会在多一端的表中增加一个外键字段,指向一的主键 测试部分代码如下: Group.hbm.xml:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate

进哥哥 221
上一篇: 关系映射多对多详解
下一篇: 集合映射(set, list, array,bag, map)详解
日依
博客等级 码龄15年 165粉丝 165原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值