`
floger
  • 浏览: 213911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate3批量删除的HQL语句

阅读更多

String hqlDelete = "delete users u where u.name = :name and u.user.id = :id"
int deletedEntities = s.createQuery( hqlDelete )
    .setString( "name", name )
    .setString( "id", id )
    .executeUpdate();

 

Hibernate3.0对批量更新和批量删除提供了支持,能够直接执行批量更新或批量删除语句,无需把被更新或删除的对象先加载到内存中。以下是通过Hibernate3.0执行批量更新的程序代码:

代码
  1. Session session = sessionFactory.openSession();    
  2. Transaction tx = session.beginTransaction();    
  3. String hqlUpdate = "update Customer set name = :newName where name =:ldName";    
  4. int updatedEntities = s.createQuery( hqlUpdate )    
  5. .setString( "newName", newName )    
  6. .setString( "oldName", oldName )    
  7. .executeUpdate();    
  8. tx.commit();    
  9. session.close();   

以下是通过Hibernate3.0执行批量删除的程序代码:

代码
  1. Session session = sessionFactory.openSession();    
  2. Transaction tx = session.beginTransaction();    
  3. String hqlDelete = "delete Customer where name = :ldName";    
  4. int deletedEntities = s.createQuery( hqlDelete )    
  5. .setString( "oldName", oldName )    
  6. .executeUpdate();    
  7. tx.commit();    
  8. session.close();   

 

 

Hibernate3.0取消了以往的session.delete(sql)的批量删除方法(原版被取消的方法可以在org.hibernate.classic包内找到原版的Session类)
那么,hibernate3.0实现批量方式的方法为:
public void cleanCMHistory(Date date) {
 
        Session session = getSession();
        Transaction tx = session.beginTransaction();
 
        try {
 
            String hqlDelete = "delete CMInfo where timeStamp < :cleanTime";
 
            int deletedEntities = session.createQuery(hqlDelete).setTimestamp(
                "cleanTime", date).executeUpdate();
                     //先查询出符合条件的结果集,再将其置空
                     //此事例删除where子句判定列为timestamp类型,故使用setTimestamp,其他
                     //类型应调用相应的set方法
            tx.commit();
 
        }
        catch (Exception ex) {
            log.info(ex);
            tx.rollback();
        }
        session.close();
 
    }
分享到:
评论

相关推荐

    hql批量删除

    以给定的文件为例,批量删除特定名字为"Tom"的Customer对象的HQL语句是"delete from CUSTOMERS where NAME='Tom'"。在Java代码中,首先需要通过SessionFactory的openSession()方法获取一个Session实例,然后开始一个...

    Hibernate HQL查询语句总结.docx

    * 在 Hibernate3 中,可以使用 HQL 语句来进行实体的更新和删除操作。 * 使用 HQL 语句可以批量更新和删除数据,提高了性能。 * 例如:update User user set user.age=20 where user.age=18; * 例如:delete from ...

    hibernate hql语句

    批量更新或删除是Hibernate 3中的一项重要特性,它可以显著提高处理大量数据时的性能。使用HQL进行批量操作时需要注意: - **性能影响**:虽然批量操作能提高效率,但在某些情况下可能会导致索引或约束的失效,需要...

    HQL语句详解Select/update/deletefromwhere...

    值得注意的是,这种批量更新或删除的方式在Hibernate 3中被称为“bulk update/delete”,它能够提高效率,但同时也可能会导致数据库级别的并发问题。 #### 三、属性查询 在某些情况下,可能只需要查询实体的某个或...

    HQL批量插入、更新和删除

    例如,要删除所有状态为“无效”的用户记录,可以执行如下HQL语句: ```java String hql = "DELETE User WHERE status = :status"; Query query = session.createQuery(hql); query.setParameter("status", ...

    Hql语句注意事项总结

    一种方法是动态构建Hql语句,将数组元素拼接成一个逗号分隔的字符串,然后在`in`子句中使用这个字符串。例如,`id in ('1','2','3')`。另一种方法是使用Hibernate的参数绑定功能,直接将数组作为参数传递,Hibernate...

    hibernate批量删除.txt

    可以考虑使用HQL或原生SQL批量执行删除操作,以减少SQL执行次数。 ```java Transaction tx = session.beginTransaction(); Query query = session.createQuery("delete from Customer c where c.age &gt; 0"); int ...

    hibernateTemplate批量删除数据

    `queryString`变量存储了HQL语句,其中`PersistentModel`是待删除数据对应的实体类名,`id in (:ids)`表示根据传入的ID列表进行匹配删除。`setParameterList("ids", ids);`用于设置参数,这里的`ids`即为传入的方法...

    jsp Hibernate批量更新和批量删除处理代码.docx

    本文件主要探讨了如何使用Hibernate进行批量更新和批量删除处理,这些操作在处理大量数据时尤其重要,因为它们可以显著提高应用的性能。下面我们将深入解析这两个主题。 批量更新在Hibernate中通常涉及在一个事务中...

    Java Hibernate3 添加和删除数据

    在Java Hibernate3中,添加和删除数据是通过持久化类和配置文件实现的,无需直接编写SQL语句。以下是关于这个主题的详细说明。 首先,我们需要了解Hibernate3的基本概念。Hibernate提供了一个API,允许开发者将Java...

    ssh整合的分页、批量删除

    4. **批量删除优化**:为了避免频繁的数据库操作,可以考虑一次性构建一个HQL删除语句,然后执行。这样可以减少数据库连接次数,提高效率。 5. **安全性考虑**:在实现批量删除时,需要防止恶意用户通过修改请求...

    SSH 全选反选批量删除

    在批量删除时,可以通过HQL(Hibernate Query Language)或者Criteria API来执行SQL删除语句。例如,你可以创建一个Criteria查询,设置条件为选中的所有记录,然后调用delete()方法进行删除。 Struts2作为前端控制...

    HibernateHQL.zip_更新

    然而,HQL也支持插入操作,它允许我们以面向对象的方式编写插入语句。例如: ```java session.createQuery("insert into EntityName (property1, property2) values (?, ?)") .setParameter(0, value1) ....

    Java的Hibernate框架中用于操作数据库的HQL语句讲解

    5. **批量更新和删除**:在Hibernate 3及以上版本,可以直接执行HQL更新和删除语句,如 `update User set name='123123' where name='sun33'` 和 `delete User where name='123123'`,无需先加载对象。 6. **分组与...

    Java中Hibernate的批量插入

    同样,也可以使用HQL的`delete`语句来实现。 总的来说,处理批量操作时,关键在于合理地控制缓存大小,适时刷新和清除缓存,以及利用HQL或SQL批处理。此外,对于大数据量的操作,还可以考虑分批次进行处理,避免一...

    Pro Hibernate 3 DAVE MINTER AND JEFF LINWOOD.pdf

    《Pro Hibernate 3》这本书由Dave Minter和Jeff Linwood共同编写,是关于Hibernate框架的深入探讨,专注于Hibernate 3版本。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序,它允许开发人员将Java...

    HQL简易介绍(DOC文档)

    在Hibernate3中,HQL引入了更新和删除操作,使得可以直接对数据库进行批量操作,提高效率。例如: - 更新操作: ```java Transaction trans = session.beginTransaction(); String hql = "update User user set user...

    Hibernate优化方案

    例如,要删除所有User对象,只需执行HQL语句`delete User`,然后调用`Query.executeUpdate()`方法。这种方式与直接使用JDBC在性能上接近,推荐使用。若必须采用取出后再修改的方式,应注意避免内存溢出,可参考批量...

    MySql+SSH的分页及批量删除示例

    在SSH框架中,可以先收集需要删除的ID,然后通过Hibernate的Session.delete()方法或HQL的DELETE语句来执行批量删除。批量删除需要注意事务控制,确保操作的原子性和一致性,避免因个别删除失败而导致其他记录的错误...

    Hibernate相关资料

    在Hibernate3中,HQL新增了对实体的更新和删除操作,大大提升了批量处理的效率。 1. 更新操作 批量更新数据时,可以使用“update”关键字。例如,要将所有年龄为18岁的用户改为20岁,只需如下HQL语句: ``` String ...

Global site tag (gtag.js) - Google Analytics