hibernate批量删除
来源:互联网 发布:中行说 知乎 编辑:程序博客网 时间:2024/06/15 23:39
一般而言,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);
}
此种方法会发出多条的删除语句,影响效率极大;
语句,其效率极低,当然我们可以使用抓取策略给其进行优化,不过这只是亡羊补牢的方法,效率的提升依然不能让我们满意,很不推荐使用;
另一种是由"拼串"形成的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);
}
此种方法会发出多条的删除语句,影响效率极大;
0 0
- hibernate批量修改,批量删除
- hibernate批量修改,批量删除 .
- hibernate批量修改,批量删除
- hibernate的批量删除
- hibernate批量删除问题
- Hibernate批量删除
- hibernate批量删除
- hibernate批量删除
- hibernate 批量删除
- hibernate批量删除
- hibernate批量删除
- hibernate批量删除
- hibernate的批量删除
- hibernate 批量删除方法
- hibernate的批量删除
- hibernate 批量删除
- hibernate批量删除
- Hibernate批量更新和批量删除
- AFNetWorking GET 和POST
- Mac X 10.9 的那些事
- 启动框架 org.apache.catalina.startup(转)
- ios--安全攻防02--后台daemon非法窃取用户iTunesstore信息
- 如何忘却jQuery,开始使用JavaScript原生API
- hibernate批量删除
- 电脑主机箱前置耳机没声音(window7)
- ADO连接字符串总结
- java获取服务器一些信息的方法
- #HY000The user specified as a definer ('root'@'%') does not exist
- OpenPop读取邮件、获取附件、删除邮件等
- strcpy()函数经典实现
- OC -- @interface和@property两种声明变量方式的区别
- eclipse 开发c/s框架