hibernate的批量删除
转自:hibernate的批量删除
一般而言,hibernate的批量删除的写法有两种,一种是hibernate内置的批量删除,不过他的批量删除是将每条记录逐一生成删除
语句,其效率极低,当然我们可以使用抓取策略给其进行优化,不过这只是亡羊补牢的方法,效率的提升依然不能让我们满意,很不推荐使用;
另一种是由"拼串"形成的HQL语句,其能够形成一条语句,从而是效率得到最大的提升;
我们先说"拼串"形式的写法:
个人使用是ssh,故此使用的是spring模板,如果单独使用hibernate,请增加事务与关闭session;
- //一条删除语句的写法
- public void del(int[] selectFlag) {
- //数组中封装的是ID的集合;
- String hql = "";
- for(int i=0;i<selectFlag.length;i++) {
- if(i==0) {
- hql = "id="+selectFlag[i];
- } else {
- hql =hql + " or id="+selectFlag[i];
- }
- }
- Session session= this.getSession();
- Query q= session.createQuery("delete from User where "+hql);
- q.executeUpdate();
- }
此写法会形成一条HQL语句,得到最大的提升;
然后我们说下是hibernate内置的批量删除:
调用dao层,并传递容器;
- /**
- * hibernate的批量删除;
- * 缺点:删除时是多条删除语句,影响效率;
- */
- List list = new ArrayList();
- for(int i=0;i<selectFlag.length;i++){
- User u= new User();
- u.setId(selectFlag[i]);
- list.add(u);
- }
- dao.del(list);
- //调用DAO层的删除方法;
DAO层:
- public void del(List list) {
- this.getHibernateTemplate().deleteAll(list);
- }
此种方法会发出多条的删除语句,影响效率极大;
hibernate的批量删除相关推荐
- 在Hibernate中处理批量更新和批量删除
批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...
- hibernate批量删除和更新数据
转载自:http://blog.csdn.net/yuhua3272004/article/details/2909538 Hibernate3.0 採用新的基于ANTLR的HQL/SQL查询翻译器, ...
- 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
1.导入jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...
- Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目 录 页面展示 分页显示数据 添加用户信息 (单个/批量)删除用户 编辑 ...
- Hibernate的批量处理-批量更新
上面介绍的方法同样适用于批量更新数据,如果需要返回多行数据,应该使用scroll()方法,从而可以充分利用服务器端游标所带来的性能优势.下面是进行批量更新的代码片段. 程序清单:codes\06\6. ...
- JSP页面实现批量删除数据
实现这个功能的基本思路如下: 1:在jsp页面中获取到要删除对象的ID,一个或多个,批量当然是多个 2:在action中就要接收这些ID,并对这些ID进行初步的处理 3:在实现层进行数据库的操作 步骤 ...
- 用Python在Windows或Linux下批量删除文件夹中指定的文件
情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面.因此,需要批量删除文件. 对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本 ...
- 删除空值_空白单元格行,如何快速批量删除?简单方法,效率飞升
EXCEL进阶课堂 · 简单却不知道 系列文章持续推送!各位小伙伴,EXCEL的日常操作中,有许多功能使用频率很高,可是绝大多数人只使用到其最基本的功能,对于其背后的强大拓展功能知之甚少,更不说使用它 ...
- py-redis中的批量删除key方法
py-redis中有个delete接口,既可以删除单个key,也可以批量删除key,后者的正确用法网上很少,我在实践中遇到该问题,特此记录一下. 网上的资料,大多都是这样的 r.delete('age ...
- php redis删除所有key,redis中批量删除key的方法
Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...
最新文章
- 真赞!IDEA中这么玩MyBatis,让编码速度飞起!
- 基于特征码文件恢复工具magicrescue
- Mysql的左外连接丶右外连接与内连接的区别
- brew 安装mysql5.6_mac使用brew安装mysql的坑
- 更改git远程分支的方法
- OpenCASCADE:简介
- 【贪心】最佳浏览路线问题
- 2月5日年初六返沪的情景
- frontend-maven-plugin插件问题解决
- 5.CND技术详解---全局负载均衡工作原理及实现
- Object to xml 2
- clover写入efi_Clover 新手入门 详解Clover EFI Tools
- 面试真题:经典智力题最详汇总(上)
- 【ELAMN预测】基于布谷鸟算法优化ELMAN神经网络实现数据回归预测matlab代码
- (学习笔记1)可见光与红外图像的特征融合(Feature Fusion)
- crackme 004
- 学习笔记-Matlab二维绘图
- 云计算数据中心网络安全的实现原理
- 大数据要学什么?该怎么学?
- 3D视觉笔记(1) - 双目视觉三维测量原理
热门文章
- 属兔的人今日运势-360星座网_明日运势属兔人(12.25)
- 做柜员还是程序员_未来的程序员,还是“高薪一族”吗?
- emplace_back() 和 push_back 的区别:emplace_back效率高,避免push_back使用时所需的额外副本或移动操作
- 535. TinyURL 的加密与解密
- a minimal solution(30,31,32)
- 命令 所有的虚拟环境_Python虚拟环境安装与配置
- 最新unity3d中关键概念全解(坐标系,脚本的执行顺序等)
- 【 Codeforces Round #301 (Div. 2) D】Bad Luck Island【概率DP】
- 引入log4j日志包为何会自动导入额外两个包(门面模式)
- 快速突破面试算法之哈希表篇