hibernate之数据加载---Session.get/load

Session.get/load() 都是根据指定的实体类和id从数据库中读取记录,并返回与之对应的实体对象;

其区别:

  • 如果在数据库里未发现所要查询的值,get()返回Null,而load()抛出ObjectNullFoundException异常;
  • Load()方法可以返回实体的代理类实例,而get()永远直接返回实体类;
  • Load()可以利用内部缓存和二级缓存的数据,而get()只在内部缓存中查找,如果没有则发出SQL去执行查询;

 

看一个最简单的数据加载:

TUser user = (TUser) session.load(TUser.class, new Integer(1));

 session加载实体对象时,将经过哪些过程?

  1. 处于性能的考虑,Session在调用数据库查询功能之前,会先在缓存中查询,首先会根据实体类和id在内部缓存中查找;如果有值则返回它;
  2. 然后,Session会在当前"NonExists"记录中进行查找,如果“NonExists”记录中在同样的查询条件,则返回null;("NonExists"记录了当前session实例在之前所查询操作中,未能查到有效的数据查询条件[相当于一个黑名单查询列表],如此以来,如果session中一个无效的查询条件重复出现,即可迅速作出判断,获得更高性能);
  3. 对于Load()而言,如果内部缓存没有想要的值,那么继续在二级缓存中查询,如果有,则返回它;
  4. 如果在缓存中没能发现值,则发出SQL去执行查询操作,经过查询未发现对应记录,则将此次查询的信息记录到"NonExists";并返回null;
  5. 根据映射配置和SQL得到的ResultSet,创建对应的数据对象;
  6. 将其数据对象纳入当前Session实体管理容器(内部缓存)中;
  7. 执行Interceptor.onLoad方法(如果有对应的Interceptor);
  8. 将数据对象纳入二级缓存;
  9. 如果数据对象实现了lifeCycle接口,则调用数据对象的onLoad方法;
  10. 返回数据对象;

 

脑机接口(BCI)从原理到开发实战 10|脑控外设:用脑电波控制机械臂/游戏 摘要: 脑机接口(BCI)的“最后一公里”是将分类结果转化为实际动作的关键环节。本文介绍如何通过指令映射、硬件通信和执行反馈实现脑控外设,包括离散/连续控制策略、防抖处理及串口/蓝牙通信方法。通过两个实战案例(运动想象控制机械臂抓取、P300/SSVEP控制游戏)和完整项目(OpenBCI控制小车),演示了从分类标签到设备动作的完整流程,重点涵盖指令生成算法(多数投票)、Python与Arduino的串口通信集成,为BCI系统落地提供实用解决方案。(149字) 阅读详情

相关推荐

DeepSeek 框架和技术栈分析

DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。

yournameplease的专栏 1512

Hibernate中get和load方法的区别详解

1. 对于Hibernate的get方法,Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。 2. Hibernate的load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论: (1)若为true,则首先在

重心开始,重新开始 3684

风力摆控制系统 PCB 设计 3 要点:STM32+MPU6050+空心杯电机驱动一体化

本文详细解析了风力摆控制系统PCB设计的3大核心要点,重点介绍STM32主控、MPU6050姿态传感器与空心杯电机驱动的一体化方案。通过系统架构设计、PCB布局布线技巧以及噪声抑制方案,帮助参赛者在电子设计竞赛中构建高精度、高稳定性的风力摆控制系统,提升竞赛作品性能。

weixin_30363285的博客 359

Hibernate的回调与拦截

在Hibernate中,有两种方式可以捕获实体对象的GRUD操作并执行相应的处理 Hibernate回调(org.hibernate.classic.Lifecycle接口): //Provides callbacks from the Session to the persistent object. //Persistent classes may implement this ...

weixin_30497527的博客 267

RK3568平台 麦克风PDM接口录音_rk pdm配置

在RK平台,Android的Audio HAL层中一般会都会有导出录音播放数据的功能。如播放的,是会直接送到声卡中的,对于播放出现问题的情况,可以从分析导出的音频数据是否正常,可以基本知道,是在应用、解码出现的问题,还是送到声卡过程中出现问题。当点开app进行录音的时候会调用到static int start_input_stream(struct stream_in *in)。音频在PDM接口输入,不经过编解码芯片直接到RK主芯片,RK主芯片自带PCM编解码功能。以下软件能播放保存下来的pdm文件。

2401_83817122的博客 2343

给STM32供电,别只接VDD和GND!VBAT、VDDA这些引脚不接会怎样?

本文深入解析STM32电源设计中VBAT与VDDA引脚的关键作用,揭示仅连接VDD和GND可能导致的ADC精度下降、RTC功能异常等问题。通过实测数据对比不同连接方案,提供包括滤波电路设计、PCB布局布线和双电源自动切换在内的实用解决方案,帮助开发者优化系统稳定性与性能。

weixin_30521161的博客 628

Hibernate数据加载——Session.get/load

 Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。 Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。 load方法可以充分利用内部缓存和

foxian的专栏 1460

工业机器人关节拆装流程_一文读懂模块化直驱电机及机器人关节模组

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!如果说芯片是智能行业最为重要的核心元件,那么电机几乎可以说是支撑了整个自动化和大工业生产以及现代社会最为重要的部件,全世界90%的能源是由电机发出来的,而70%是由电机消耗调的,电机可以说是整个人类社会能源循环的占有绝对地位的产品。普通伺服电机伺服电机其实已经算是电动机中比较高端的类型,特别是永磁同步类型的伺服电机,由于其启动快速,惯量...

weixin_32159771的博客 2155

$(xxx) 和 $.xxx ,四种不同的onload

$(xxx) 和 $.xxx $.xxx: jquery 是一个对象 ,$.xxx就是调用这个对象的方法或者属性值 $(xxx) : 返回一个 jquery对象(把原生DOM对象变为一个jQuery对象) , jquery对象是 原声DOM对象的封装,它们之间不同,jquery对象包含了很多操作DOM对象的方法 Dom对象和 jQuery对象互相转化 •$(domObjec...

q503385724的博客 907

【OpenClaw从入门到精通】第05篇:实战!OpenClaw自动化搞定邮件/日历/文件管理(2026实测避坑版)

本文聚焦OpenClaw核心实用场景,手把手教你实现邮件、日历、文件管理的全自动化。通过安装三大核心技能,配置IMAP/SMTP邮箱、跨平台日历及文件沙盒权限,结合4个虚拟实战案例,演示从邮件自动摘要、会议冲突预警到下载文件夹分类的完整流程。文中包含2026实测的命令代码、配置步骤、排障方案,所有案例需在测试环境验证,代码未上传GitHub。兼顾新手入门与进阶需求,让OpenClaw从“能聊天”升级为“能干活”,帮你节省80%重复工作时间。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2675

FPGA 学习笔记:Vitis IDE launch failed 的解决方法

FPGA 学习笔记:Vitis IDE launch failed 的解决方法

坚韧与专注 1万+

Hibernate实战——事件机制中的事件系统

一配置 <?xml version="1.0" encoding="GBK"?> <!-- 指定Hibernate配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://...

实践求真知 337

第3课:大模型集成与API设计

OpenAIAnthropicGoogle国内厂商:文心一言、通义千问、讯飞星火。

lpfasd123的博客 111

转:Hibernate数据加载——Session.get/load

Hibernate数据加载——Session.get/load 个人觉得总结不错:http://blog.csdn.net/baobao8505/article/details/620437   Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:   如果未能发现符合条件的记录,get方法返回null,而l...

sunrisezhou的博客 119

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

(转贴)Hibernate数据加载——Session.get/load

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。 Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。 load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法...

limbo1982的博客 153

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hibernate3学习笔记(三)|数据加载——Session.get/load

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。 Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。 load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方

【昆山人在上海】 925

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Hibernate Session操作, 查询过滤, 缓存利用, 批量处理

 1.   Session---单数据加载---load/ get Load方法根据指定的实体类和id从数据库装载认为存在的一条记录. 应该确保对象确实存在, 否则会抛出ObjectNotFoundException. Load方法可返回实体的代理类实例, 可充分利用内部缓存和二级缓存中的现有数据.   get方法根据指定的实体类和id从数据库查询并装载一条记录.数据

a592036394的专栏 747

五、hibernate的Session操作, 查询过滤, 缓存利用, 批量处理

一. Session操作, 查询过滤, 缓存利用, 批量处理 数据查询,装载 1. Session---单数据加载---load/ get Load方法根据指定的实体类和id从数据库装载认为存在的一条记录. 应该确保对象确实存在, 否则会抛出ObjectNotFoundException. Load方法可返回实体的代理类实例, 可充分利用内部缓存和二级缓...

weixin_33979745的博客 150

hibernate性能调优1

  a) 完成同样一件事,Hibernate提供了可供选择的一些方式,但具体使用什么方式,可能用性能/代码都会有影响。显示,一次返回十万条记录 (List/Set/Bag/Map等)进行处理,很可能导致内存不够的问题,而如果用基于游标(ScrollableResults)或 Iterator的结果集,则不存在这样的问题。       b) Session的load/get方法,前者会使用二级缓...

王二北的个人博客 135

Hibernate中Session.load与Session.get的区别

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在

千纸蝴蝶--博客园 1万+
上一篇: hibernate之乐观锁(Optimistic Locking)
下一篇: 愚蠢且能干---转载外刊IT评论
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值