我需要從表中刪除基於密鑰的條目,這些條目可能會達到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