转自:hibernate的批量删除
一般而言,hibernate的批量删除的写法有两种,一种是hibernate内置的批量删除,不过他的批量删除是将每条记录逐一生成删除
语句,其效率极低,当然我们可以使用抓取策略给其进行优化,不过这只是亡羊补牢的方法,效率的提升依然不能让我们满意,很不推荐使用;
另一种是由"拼串"形成的HQL语句,其能够形成一条语句,从而是效率得到最大的提升;

我们先说"拼串"形式的写法:
 个人使用是ssh,故此使用的是spring模板,如果单独使用hibernate,请增加事务与关闭session;

  1. //一条删除语句的写法
  2. public void del(int[] selectFlag) {
  3. //数组中封装的是ID的集合;
  4. String hql = "";
  5. for(int i=0;i<selectFlag.length;i++) {
  6. if(i==0) {
  7. hql = "id="+selectFlag[i];
  8. } else {
  9. hql =hql + " or id="+selectFlag[i];
  10. }
  11. }
  12. Session session= this.getSession();
  13. Query q= session.createQuery("delete from User where "+hql);
  14. q.executeUpdate();
  15. }

此写法会形成一条HQL语句,得到最大的提升;

然后我们说下是hibernate内置的批量删除:

调用dao层,并传递容器;

  1. /**
  2. * hibernate的批量删除;
  3. * 缺点:删除时是多条删除语句,影响效率;
  4. */
  5. List list = new ArrayList();
  6. for(int i=0;i<selectFlag.length;i++){
  7. User u= new User();
  8. u.setId(selectFlag[i]);
  9. list.add(u);
  10. }
  11. dao.del(list);
  12. //调用DAO层的删除方法;

DAO层:

  1. public void del(List list) {
  2. this.getHibernateTemplate().deleteAll(list);
  3. }

此种方法会发出多条的删除语句,影响效率极大;

hibernate的批量删除相关推荐

  1. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

  2. hibernate批量删除和更新数据

    转载自:http://blog.csdn.net/yuhua3272004/article/details/2909538 Hibernate3.0 採用新的基于ANTLR的HQL/SQL查询翻译器, ...

  3. 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

    1.导入jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...

  4. Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 页面展示 分页显示数据 添加用户信息 (单个/批量)删除用户 编辑 ...

  5. Hibernate的批量处理-批量更新

    上面介绍的方法同样适用于批量更新数据,如果需要返回多行数据,应该使用scroll()方法,从而可以充分利用服务器端游标所带来的性能优势.下面是进行批量更新的代码片段. 程序清单:codes\06\6. ...

  6. JSP页面实现批量删除数据

    实现这个功能的基本思路如下: 1:在jsp页面中获取到要删除对象的ID,一个或多个,批量当然是多个 2:在action中就要接收这些ID,并对这些ID进行初步的处理 3:在实现层进行数据库的操作 步骤 ...

  7. 用Python在Windows或Linux下批量删除文件夹中指定的文件

    情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面.因此,需要批量删除文件. 对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本 ...

  8. 删除空值_空白单元格行,如何快速批量删除?简单方法,效率飞升

    EXCEL进阶课堂 · 简单却不知道 系列文章持续推送!各位小伙伴,EXCEL的日常操作中,有许多功能使用频率很高,可是绝大多数人只使用到其最基本的功能,对于其背后的强大拓展功能知之甚少,更不说使用它 ...

  9. py-redis中的批量删除key方法

    py-redis中有个delete接口,既可以删除单个key,也可以批量删除key,后者的正确用法网上很少,我在实践中遇到该问题,特此记录一下. 网上的资料,大多都是这样的 r.delete('age ...

  10. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

最新文章

  1. 真赞!IDEA中这么玩MyBatis,让编码速度飞起!
  2. 基于特征码文件恢复工具magicrescue
  3. Mysql的左外连接丶右外连接与内连接的区别
  4. brew 安装mysql5.6_mac使用brew安装mysql的坑
  5. 更改git远程分支的方法
  6. OpenCASCADE:简介
  7. 【贪心】最佳浏览路线问题
  8. 2月5日年初六返沪的情景
  9. frontend-maven-plugin插件问题解决
  10. 5.CND技术详解---全局负载均衡工作原理及实现
  11. Object to xml 2
  12. clover写入efi_Clover 新手入门 详解Clover EFI Tools
  13. 面试真题:经典智力题最详汇总(上)
  14. 【ELAMN预测】基于布谷鸟算法优化ELMAN神经网络实现数据回归预测matlab代码
  15. (学习笔记1)可见光与红外图像的特征融合(Feature Fusion)
  16. crackme 004
  17. 学习笔记-Matlab二维绘图
  18. 云计算数据中心网络安全的实现原理
  19. 大数据要学什么?该怎么学?
  20. 3D视觉笔记(1) - 双目视觉三维测量原理

热门文章

  1. 属兔的人今日运势-360星座网_明日运势属兔人(12.25)
  2. 做柜员还是程序员_未来的程序员,还是“高薪一族”吗?
  3. emplace_back() 和 push_back 的区别:emplace_back效率高,避免push_back使用时所需的额外副本或移动操作
  4. 535. TinyURL 的加密与解密
  5. a minimal solution(30,31,32)
  6. 命令 所有的虚拟环境_Python虚拟环境安装与配置
  7. 最新unity3d中关键概念全解(坐标系,脚本的执行顺序等)
  8. 【 Codeforces Round #301 (Div. 2) D】Bad Luck Island【概率DP】
  9. 引入log4j日志包为何会自动导入额外两个包(门面模式)
  10. 快速突破面试算法之哈希表篇