Hibernate中如何实现批量更新和批量删除?代码举例讲解

在Hibernate中,批量更新和批量删除用于操作大量的数据,可以提高性能和效率。主要有以下两种实现方式:

  1. SQL语句批量操作:
  • 使用Session的createSQLQuery()方法执行带有IN关键字的SQL语句,实现批量更新或删除。
    例如:批量更新
String hql = "update Customer set name=? where id IN (:ids)";
SQLQuery query = session.createSQLQuery(hql);
query.setParameter("name", "John");
query.setParameterList("ids", idList);  // 传入id列表
int count = query.executeUpdate();

例如:批量删除

String hql = "delete from Customer where id IN (:ids)";
SQLQuery query = session.createSQLQuery(hql);
query.setParameterList("ids", idList);
int count = query.executeUpdate();
  1. HQL语句批量操作:
  • 使用Session的createQuery()方法执行带有IN关键字的HQL语句,实现批量更新或删除。
    例如:批量更新
String hql = "update Customer set name=? where id IN (:ids)"; 
Query query = session.createQuery(hql);
query.setParameter("name", "John");
query.setParameterList("ids", idList);
int count = query.executeUpdate(); 

例如:批量删除

String hql = "delete Customer where id IN (:ids)";
Query query = session.createQuery(hql);  
query.setParameterList("ids", idList);
int count = query.executeUpdate();