sql – Hibernate中的Delete()和Deleteall()

请考虑以下两种方法来删除名为“John”的一组员工.

List<Employee> list = new ArrayList<Employee>();
String query=   " from Employee emp where emp.name = 'John'";
list=getHibernateTemplate().find(query);

第一种方法:

 getHibernateTemplate().deleteAll(list);

第二种方法:

Iterator<BulkChangeRequest> itList = list.iterator();
    while(itList.hasNext()) {
        Employee emp = itList.next();
        getHibernateTemplate().delete(emp);
    }

它们在性能方面有显着差异吗?它们两者基本相同,即deleteAll方法是否一个一个地删除行?

使用以下查询在SQL中执行此操作也不是更好吗?

" delete from Employee where name = 'John'"

最佳答案 是.最好使用SQL或HQL删除名为“John”的所有员工记录,而不是第一个选项.只是因为在第一个选项中,您必须将所有员工记录从db加载到删除.这显然是一项额外的任务.

我认为,对于delete()和deleteAll(),除了delete()之外没有区别,它会为每个调用创建新的会话;而在deleteAll()中,所有对象都将在一个会话中删除.但查询的数量将是相同的.

点赞