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执行批量更新的程序代码:
代码
-
Session session = sessionFactory.openSession();
-
Transaction tx = session.beginTransaction();
-
String hqlUpdate = "update Customer set name = :newName where name =:ldName";
-
int updatedEntities = s.createQuery( hqlUpdate )
-
.setString( "newName", newName )
-
.setString( "oldName", oldName )
-
.executeUpdate();
-
tx.commit();
- session.close();
以下是通过Hibernate3.0执行批量删除的程序代码:
代码
-
Session session = sessionFactory.openSession();
-
Transaction tx = session.beginTransaction();
-
String hqlDelete = "delete Customer where name = :ldName";
-
int deletedEntities = s.createQuery( hqlDelete )
-
.setString( "oldName", oldName )
-
.executeUpdate();
-
tx.commit();
- 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();
}
分享到:
相关推荐
以给定的文件为例,批量删除特定名字为"Tom"的Customer对象的HQL语句是"delete from CUSTOMERS where NAME='Tom'"。在Java代码中,首先需要通过SessionFactory的openSession()方法获取一个Session实例,然后开始一个...
* 在 Hibernate3 中,可以使用 HQL 语句来进行实体的更新和删除操作。 * 使用 HQL 语句可以批量更新和删除数据,提高了性能。 * 例如:update User user set user.age=20 where user.age=18; * 例如:delete from ...
批量更新或删除是Hibernate 3中的一项重要特性,它可以显著提高处理大量数据时的性能。使用HQL进行批量操作时需要注意: - **性能影响**:虽然批量操作能提高效率,但在某些情况下可能会导致索引或约束的失效,需要...
值得注意的是,这种批量更新或删除的方式在Hibernate 3中被称为“bulk update/delete”,它能够提高效率,但同时也可能会导致数据库级别的并发问题。 #### 三、属性查询 在某些情况下,可能只需要查询实体的某个或...
例如,要删除所有状态为“无效”的用户记录,可以执行如下HQL语句: ```java String hql = "DELETE User WHERE status = :status"; Query query = session.createQuery(hql); query.setParameter("status", ...
一种方法是动态构建Hql语句,将数组元素拼接成一个逗号分隔的字符串,然后在`in`子句中使用这个字符串。例如,`id in ('1','2','3')`。另一种方法是使用Hibernate的参数绑定功能,直接将数组作为参数传递,Hibernate...
可以考虑使用HQL或原生SQL批量执行删除操作,以减少SQL执行次数。 ```java Transaction tx = session.beginTransaction(); Query query = session.createQuery("delete from Customer c where c.age > 0"); int ...
`queryString`变量存储了HQL语句,其中`PersistentModel`是待删除数据对应的实体类名,`id in (:ids)`表示根据传入的ID列表进行匹配删除。`setParameterList("ids", ids);`用于设置参数,这里的`ids`即为传入的方法...
本文件主要探讨了如何使用Hibernate进行批量更新和批量删除处理,这些操作在处理大量数据时尤其重要,因为它们可以显著提高应用的性能。下面我们将深入解析这两个主题。 批量更新在Hibernate中通常涉及在一个事务中...
在Java Hibernate3中,添加和删除数据是通过持久化类和配置文件实现的,无需直接编写SQL语句。以下是关于这个主题的详细说明。 首先,我们需要了解Hibernate3的基本概念。Hibernate提供了一个API,允许开发者将Java...
4. **批量删除优化**:为了避免频繁的数据库操作,可以考虑一次性构建一个HQL删除语句,然后执行。这样可以减少数据库连接次数,提高效率。 5. **安全性考虑**:在实现批量删除时,需要防止恶意用户通过修改请求...
在批量删除时,可以通过HQL(Hibernate Query Language)或者Criteria API来执行SQL删除语句。例如,你可以创建一个Criteria查询,设置条件为选中的所有记录,然后调用delete()方法进行删除。 Struts2作为前端控制...
然而,HQL也支持插入操作,它允许我们以面向对象的方式编写插入语句。例如: ```java session.createQuery("insert into EntityName (property1, property2) values (?, ?)") .setParameter(0, value1) ....
5. **批量更新和删除**:在Hibernate 3及以上版本,可以直接执行HQL更新和删除语句,如 `update User set name='123123' where name='sun33'` 和 `delete User where name='123123'`,无需先加载对象。 6. **分组与...
同样,也可以使用HQL的`delete`语句来实现。 总的来说,处理批量操作时,关键在于合理地控制缓存大小,适时刷新和清除缓存,以及利用HQL或SQL批处理。此外,对于大数据量的操作,还可以考虑分批次进行处理,避免一...
《Pro Hibernate 3》这本书由Dave Minter和Jeff Linwood共同编写,是关于Hibernate框架的深入探讨,专注于Hibernate 3版本。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序,它允许开发人员将Java...
在Hibernate3中,HQL引入了更新和删除操作,使得可以直接对数据库进行批量操作,提高效率。例如: - 更新操作: ```java Transaction trans = session.beginTransaction(); String hql = "update User user set user...
例如,要删除所有User对象,只需执行HQL语句`delete User`,然后调用`Query.executeUpdate()`方法。这种方式与直接使用JDBC在性能上接近,推荐使用。若必须采用取出后再修改的方式,应注意避免内存溢出,可参考批量...
在SSH框架中,可以先收集需要删除的ID,然后通过Hibernate的Session.delete()方法或HQL的DELETE语句来执行批量删除。批量删除需要注意事务控制,确保操作的原子性和一致性,避免因个别删除失败而导致其他记录的错误...
在Hibernate3中,HQL新增了对实体的更新和删除操作,大大提升了批量处理的效率。 1. 更新操作 批量更新数据时,可以使用“update”关键字。例如,要将所有年龄为18岁的用户改为20岁,只需如下HQL语句: ``` String ...