hibernate的级联、延迟加载、inverse属性

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

          hibernate的级联是用来说明数据库中二个表之间的相互关系(one---to ---one, one ---to---many, many---to---many)。当对主对象做某种操作时,是否对其相关联的子对象也做相对应的操作。

常见的级联(cascade)有:

(1) none: 表示在保存、修改、删除时不对其级联对象不做任何的操作,它是默认值。

(2)save-update:表示在保存和更新时,级联保存、更新附属对象。

(3)delete:表示在删除当前对象时,级联删除附属对象。

(4)all:表示所有情况下均进行级联操作,比如:save-update, delete操作等。

(5)delete--orphan: 表示删除当前对象的同时,删除与当前对象解除关系的孤儿对象。(仅限于用在一对多上面。)

 

        hibernate的延迟加载(Lazy  load):这种技术被广泛的运用,这种延迟加载能够保证应用只有在需要的时候才去数据库抓取相应的数据记录,通过延迟加载技术能够避免过多,过早的加载数据库表中的数据,从而减少应用内存的开销。hibernate的延迟加载实质上是一个代理模式的运用,当程序通过hibernate装载一个实体时,默认情况下hibernate不会马上去抓取它的集合属性、关联实体所对应的记录。而是通过一个代理来生成这些集合属性,和关联实体,这就是代理的优势。

例如: 在一个级联关系:部门-----员工(one---many)的表中,当进行一些操作时,要想优化它的性能就把lazy设为true。

 

        hibernate的inverse属性:Inverse是双向关系中的基本概念,当然对于多数实体我们并不需要双向关联,更多的是选择单项关联。inverse的使用或设置不当会导致性能的下降,既会产生多余的sql,甚至会有jdbc异常产生。例如:在双向关联当中,如果双放inverse都设置为true,那么双方将都不会维护关系的更新,如果双方inverse都设置为false的话,必然后导致双方维护同一个关系。所以双向关联中,最好一端inverse=true,一端inverse=fase。一般情况下会把inverse=fase放在many端。

LiveGBS流媒体平台GB/T28181实战指南:海康NVR物联网卡摄像头注册失败全链路排查与抓包技巧 本文详细解析了LiveGBS流媒体平台中海康NVR物联网卡摄像头注册失败的常见问题及解决方案。通过全链路排查与抓包技巧,包括物联网卡配置、多网卡冲突处理、防火墙设置等,帮助用户快速定位并解决GB/T28181协议下的设备注册难题,提升流媒体平台部署效率。 阅读详情

相关推荐

基于POI-TL实现动态Word模板数据填充(含图表):从需求到落地的完整开发实践

本文聚焦企业级报告生成场景中 “在线编辑模板 + 动态数据填充” 的核心需求,详细阐述基于 POI-TL、OnlyOffice 与 MinIO 的全栈实现方案。通过代码示例拆解模板加载、文字填充、图表匹配渲染(含通过关系 ID 关联图表与段落的关键逻辑)、报告存储全步骤。最终通过技术组合实现业务人员可视化编辑模板、后端高效填充数据的目标,为同类动态 Word 生成需求提供可复用的实践参考。

imHanweihu的博客 1811

关于延迟加载(lazy)和强制加载Hibernate.initialize(Object proxy) ) 等

关于延迟加载(lazy)和强制加载Hibernate.initialize(Object proxy) ) 等 在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文件中Lazy属性是全局控制的,如何处理呢?        在配置文件里面可以用lazy=tru

燕窝 8476

FAGLB03余额显示异常排查与修复指南

本文针对SAP新总账中FAGLB03报表余额显示异常问题,提供了专业的排查与修复指南。文章深入剖析了数据不一致的核心原因,如FAGLFLEXT汇总表与凭证明细不同步、年度余额结转(FAGLGVTR)失败等,并详细介绍了使用FAGLF03进行精准诊断、通过SE38执行标准调整程序TFC_ADJUST_VZ进行修复的标准操作流程,帮助用户快速恢复数据一致性,确保财务报表的准确性。

weixin_29313423的博客 281

Hibernate级联操作

1.一对多 | 多对一 在表中的表达: 在实体中的表达 在orm元数据中的表达 注意:在声明Set和多对一的对象的时候要记得写上get和set必须声明成属性,否则在name填入的会红字报错。 2.多对多 表中的表现: 实体中的表达: orm元数据中: 3.级联(cascade) 级联是什么:级联是对一个对象进行操作的时候,与它相关联的对象也会一并进行响应的操作。 例如: 这...

Coder Wang 1792

hibernate级联操作详解

级联操作  一.简单的介绍 cascade和inverse (Employee – Department) l  Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:          none,all,save-update,delete, lock,refresh,evict,replicate,persist,          m

张晓丛的专栏 2万+

java-hibernate框架4(hibernate多表操作,级联操作与延迟加载,多对多关系操作,hibernate缓存技术)

1、Hibernate多表操作        关系型数据库具有三种常用关系:一对一关系、一对多关系和多对多关系。        建立了一对多关系的表之间,一方中的表叫“主表”,多方中的表叫“子表”;两表中相关联的字段,在主表中叫“主键”,在子表中称“外键”。 一对多关系操作     我们以院系表与学生表为例。在Hibernate映射中,在院系表中添加一个集合属性,集合

浮生若梦--JJ 1542

hibernate框架一对多cascade取值和孤儿删除(十四)

1. 需要掌握的取值如下 * none -- 不使用级联 * save-update -- 级联保存或更新 * delete -- 级联删除 * delete-orphan -- 孤儿删除.(注意:只能应用在一对多关系) * all -- 除了delete-orphan的所有情况.(包含save-update delete) * all-delete-orphan --

csdn_kenneth的博客 2144

hibernate 级联操作

级联操作  一.简单的介绍 cascade和inverse (Employee – Department) l  Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:          none,all,save-update,delete, lock,refresh,evict,replicate,persist,         ...

u014164005的博客 235

hibnate的级联操作,更新、删除

级联操作  一.简单的介绍 cascade和inverse (Employee – Department) l  Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:          none,all,save-update,delete, lock,refresh,evict,replicate,persist,          m

oGaiZhuZiJi的专栏 1032

hibernate级联的3个属性

刘芬(Java学生) 459

Hibernate小知识点(many to one ,one to one的属性解释)

Hibernate知识点小记         1.cascade                  cascade属性是设置级联操作的也就是在操作一端的数据如果影响到多端数据时会进行级联操作,一对一的时候直接                  写在标签上,其他的要写在set标签上                  cascade="none|save-update|all|

limingei的博客 481

学习hibernate总结

1.hibernate中的瞬态对象没在缓存中,持久态对象在缓存中有别的地方也有,游离态对象在缓存里没有但在其他地方 有。关闭后缓存就没有。 2. (1)hibernate中session.load(类名.class,)是类对象的子对象,而session.get却是类对象    (2)session.load找不会报错,而session.get找不到却返回的是空。     (3)sessio

追梦 1291

Hibernate Part2

Hibernate Part2

qq_33840797的博客 256

Hibernate学习

表关系 多对多 一对多 一对一 一对多 建表原则: 在多的一方创建外键指向一的一方的主键 多对多 建表原则: 创建一个中间表,中间表中至少两个字段作为外键分别指向多对多双方的主键 一对一 建表原则有两种: 一种: 唯一外键对应: 假设一对一的任意一方为多,在多的一方创建外键指向一的一方的主键,然后将外键设置为唯一。 二种: 主键对应: 一方的主键作为另一方的主键。 一对多创建映射 (客户的映射) <!-- set 标签: * name属性: 多的一方的集合的属性名称 --> <set

kfcing的博客 274

浅谈hibernate(cascade,lazy,inverse,fetch)

1.cascade是否执行级联操作 <set name="children" lazy="true" cascade="all"> 在保存主表的时候,如果没有保存从表信息,会抛出异常,如果设置了级联关系,可以自动先保存从表,在保存主表 all: 所有情况下均进行关联操作,即save-update和delete。 n...

weixin_30732825的博客 162

Hibernate面试部分问题

Hibernate部分

woaini886353的博客 2292

关系映射

1.关联关系:类与类之间最普遍的关系1.1Hibernate关联映射1.1.1Many2One配置:&lt;!--配置多对一单向关联    name:一的一方在多的一方的属性名    cloumn:在t_emp表中生成的列名(外键列)--&gt;&lt;many-to-one name="dept" column="dept_id"/&gt;---实际使用中:一定要先添加一的一方再添加多的一方2....

qq_41769008的博客 411

hibernate总结2

inverse属性inverse属性可以被设置到集合标签<set>上,表示在存储双向一对多关联映射的时候,存储的是那一方的关联引用。 默认情况下,inverse=“false”,所以,我们可以从“一”的一端或者“多”一端来维护两者之间的关系; 如果我们设置inverse=“true”,则只能通过“多...

weixin_34362875的博客 76

hibernate

Hibernate是一个主流的ORM框架,用于将面向对象映射成面向关系数据库。使用步骤包括:导入依赖、创建配置文件、定义实体类和映射文件。核心配置通过hibernate.cfg.xml设置数据库连接和SessionFactory。Hibernate支持一对多、多对多关系映射,并提供延迟加载优化机制。HQL(Hibernate查询语言)支持面向对象查询,包括分页、条件、模糊查询等功能。配置文件可设置数据库表生成策略(update/create等),实体映射文件通过inverse和cascade属性管理关系维护

m0_46907779的博客 187

Hibernate 中lazy的作用

Hibernate 中lazy的作用 上一篇 / 下一篇 2009-06-24 20:02:20 / 个人分类:java 查看( 506 ) / 评论( 2 ) / 评分( 5 / 0 ) <many-to-one name="departmentInfo" class="com.plane.beans.DepartmentInfo" lazy="false" fetch=...

weixin_30236595的博客 130

Hibernate 级联删除

在一对多的关系映射中 在一的一方配置文件中将会配置set节点信息: *.hbm.xml配置文件中set节点的属性:          Lazy:默认是true 即使用延迟加载,false表示即时加载;          Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改;          Cascade:是否使用级联操作;配置方法:cascad

JeelonXu.feng 1万+
上一篇: 对Hebernate缓存的理解
下一篇: 线程问题
ITbiyu
博客等级 码龄17年 18粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值