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 ...
最新文章
- OpenStack环境搭建(三:Computer与Controller节点的安装及配置)
- python字符串连接优先使用jion而非+
- windows中VS卸载opencv配置,重新安装其他版本
- DEDE的安装 和 DEDE文件和目录详解与安全问题
- 一步步编写avalon组件02:分页组件
- MediaDevices.getUserMedia()
- 高通7227平台外接UBLOX的GPS模块数据接收不稳定问题
- 解决手机邮箱登录学生邮箱时服务器无法连接的问题
- 求网页中嵌入mp3 格式音乐的html代码,子夜星·关于网页中加入音乐代码的讲解...
- 宝尚简讯-短期震荡在蓄势
- retinaface人脸检测在fddb数据集上的测试
- JAVA百度贴吧签到器
- mysql定时自动备份数据库
- 利用matlab实现驻波仿真
- 随笔-不足与外人道也
- php迭代什么意思,迭代关系什么意思
- 第一章 C语言与内存
- Unity 颜色板|调色板|无级变色功能
- Linux下python环境搭建
- 正则表达式 匹配美元等多种货币符号的超简单方法
热门文章
- amd玄冰400怎么拆图解_【装机帮扶站】第735期:“无货”当道的京东年底大预售来了(AMD篇)...
- oracle多边形经纬范围筛选_Oracle数据库之Oracle spatial空间查询的选择度分析
- 机器学习特征与类型概述
- 机器学习数学基础之微分
- CrowdSec:行为检测引擎
- 刷题记录 kuangbin带你飞专题九:连通图
- HashMap源码分析(保姆式注解):三大方法(构造、Put、Remove) ;附带面试考点及博主免费答疑
- 计算机应用基础专科在线考试,电子科技大学在线考试2019年春计算机应用基础专科(18页)-原创力文档...
- php while次数,PHP While 循环
- 136.Single Number