我需要从表中删除基于密钥的条目,这些条目可能会达到500万左右。有两种方法可以解决这个问题。一个使用Hibernate,另一个使用直接SQL查询。休眠或SQL删除操作?
休眠:
List<Employee> empList =
getHibernateTemplate()
.findByNamedParam("from Employee emp where emp.Id=:empId","empId",employeeId);
Iterator<Employee> empIter = empList .iterator();
while(empIter.hasNext()) {
Employee empTran = empIter.next();
getHibernateTemplate().delete("Employee", empTran);
SQL:
delete from Employee where Id = employeeId";
这两个之间将得到的结果更快? Hibernate查询可以进一步调整吗?
(请忽略语法错误如果有的话)
我想你是通过主键删除?如果是,那么你为什么使用列表? – kingpin 2012-02-23 13:08:30
No. Id不是主键 – Chillax 2012-02-23 13:13:04
请注意,因为SQL语句不会从第一级和第二级缓存中删除条目!您最终可能会遇到数据不一致的情况。 – 2012-02-23 14:04:43