Hibernate的批量处理-批量更新
上面介绍的方法同样适用于批量更新数据,如果需要返回多行数据,应该使用scroll()方法,从而可以充分利用服务器端游标所带来的性能优势。下面是进行批量更新的代码片段。
程序清单:codes\06\6.3\batchUpdate\src\lee\UserManager.java
- private void updateUsers()throws Exception
- {
- //打开Session
- Session session = HibernateUtil.currentSession();
- //开始事务
- Transaction tx = session.beginTransaction();
- //查询出User表中的所有记录
- ScrollableResults users = session.createQuery("from User")
- .setCacheMode(CacheMode.IGNORE)
- .scroll(ScrollMode.FORWARD_ONLY);
- int count=0;
- //遍历User表中的全部记录
- while ( users.next() )
- {
- User u = (User) users.get(0);
- u.setName("新用户名" + count);
- //当count为20的倍数时,
- //将更新的结果从Session中flush到数据库。
- if ( ++count % 20 == 0 )
- {
- session.flush();
- session.clear();
- }
- }
- tx.commit();
- HibernateUtil.closeSession();
- }
通过这种方式,虽然可以执行批量更新,但效果非常不好。执行效率不高,需要先执行数据查询,然后再执行数据更新,而且这种更新将是逐行更新,即每更新一行记录,都需要执行一条update语句,性能也非常低下。
为了避免这种情况,Hibernate提供了一种类似于DML语句的批量更新、批量删除的HQL语法。
Hibernate的批量处理-批量更新相关推荐
- EF Core中高效批量删除、更新数据的Zack.EFCore.Batch发布三个新特性
Zack.EFCore.Batch是一个支持在Entity Framework Core中高效删除和更新数据的开源库.我们知道,EF Core中不支持高效的删除和更新数据,所有的更新和操作都是逐条数据 ...
- 一招教你数据仓库如何高效批量导入与更新数据
摘要:GaussDB(DWS)支持的MERGE INTO功能,可以同时进行大数据量的更新与插入.对于数据仓库是一项非常重要的技术. 本文分享自华为云社区<一招教你如何高效批量导入与更新数据> ...
- oracle批量将id更新为uuid,oracle批量新增更新数据
本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...
- win7系统补丁服务器,win7怎么批量卸载系统更新补丁KB? win7快速删除系统补丁的技巧...
当我们电脑打完所有KB补丁之后,由于不兼容而导致了问题不断,又找不出具体是哪个补丁所引起,那么,我们最笨的方法就是删除卸载之前所有安装的系统更新补丁,如果一个一个去手动卸载,难免会导致手指抽筋.win ...
- 用PSTools实现软件的远程批量安装或更新
最近有个项目,以c/s架构开发,客户端需要部署到50多台客户机上.但是软件的维护管理(包括安装.更新等)都由一个人来做,此人也不希望客户端程序自己悄悄更新.所以必须设计一种软件远程批量安装和更新的方案 ...
- 批量插入或更新数据(MyBatis-plus框架)
目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础 ...
- pg批量插入_PostgreSQL实现批量插入、更新与合并操作的方法
前言 就在 2019 年 1 月份微软收购了 PostgreSQL 数据库的初创公司 CitusData, 在云数据库方面可以增强与 AWS 的竟争.AWS 的 RDS 两大开源数据库就是 MySQL ...
- PostgreSQL实现批量插入、更新与合并操作的方法_PostgreSQL_脚本之家
前言 就在 2019 年 1 月份微软收购了 PostgreSQL 数据库的初创公司 CitusData, 在云数据库方面可以增强与 AWS 的竟争.AWS 的 RDS 两大开源数据库就是 MySQL ...
- php 自动生成sql,用PHP批量生成SQL更新语句 网页版
有时候我们遇到很的SQL需要更新的时候,主意是大批量的时候 如果手动去添加单引号 双引号啥的 效率是非常的慢的! 下面看看批量成成的结果图: 如果是需要手动输入的是不是很慢呢! 代码逻辑思路很简单, ...
- MySQL批量插入与更新
目录 准备表和测试数据 insert into values.insert into select replace into insert into on duplicate key update i ...
最新文章
- 《大数据导论》——1.4节案例学习背景
- linux gcc 宏定义 __GNUC__ __GNUC_MINOR__ 版本区分
- overfitting
- boost::gregorian模块实现localization的测试程序
- C语言入门题-计算到任意日期的总天数
- Android开发之代码开发部分字符串变色
- 移动端手指操控左右滑动的菜单
- 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)
- 感恩节活动促销海报模板,摆好借势感恩节的姿势
- 框架封装_重大突破,欧菲光成功研发半导体封装用高端引线框架
- linux .net环境变量,Linux编程 系统环境变量位置, 环境变量持久化
- sql 整改措施 注入_改进的SQL防注入(加强抑错)-ASP教程,安全加密
- HTML编辑器-HTML网页表单可视化在线编辑器插件大全
- 技术贴:物联网最低功耗解决方案由何种传感器实现的?
- RadASM的主题更换!
- 模电--反馈电路的综合判断
- 滚石特写: 沉默7年后, Magic Leap用魔幻现实主义式科技重新定义了自己
- 【方法论】时间管理矩阵(Time Management Matrix )-给事情排序,列好1234再执行吧!
- 连接线是计算机硬件吗,音箱线怎么连接电脑?有源音箱和无源音箱连接电脑教程...
- 伦巴时间步的动作要领_伦巴前进步动作的基本要领
热门文章
- Layui form 表单验证 基本属性
- c语言 取随机字符串,C语言之获取32字节随机数的字符串
- python自动化测试框架开发_webUI自动化测试框架(Python+selenium)
- redis 计数器 java_Redis介绍
- unity头顶状态制作_Unity中结合IK实现Lookat
- 阻塞io阻塞io_面试官:直接IO、缓存IO、阻塞与同步?
- C#程序打包与部署,包括处理安装向导中用户输入的参数,创建卸载程序。
- C#判断检测网络是否连接
- 机器学习理论与实战:逻辑回归
- php query builder,php – Symfony2 – Doctrine2 QueryBuilder WHERE I...