我有桌子,想要更新每个ID的每个Salary记录
ID FirstName Salary
10 A 10,000
15 B 5000
17 C 7000
19 D 8000
但是发生了什么是为每一行执行update语句。假设我有1000条记录然后更新语句正在执行1000次。有没有更好的方法我可以实现这一点。 我正在做,
RetriveDataMethod()
{
List listIdSalary = retriveIdAndSalary();
Iterator itr =listIdSalary.iterator();
while(itr.hasNext()){
Object[] idStr = (Object[]) itr.next();
String id = (String)idStr[0];
String salary = (String)idStr[1];
updateDataMethod(id,salary)
}
}
updateDataMethod(String id,String salary)
{
String s = "update table set salary=:salry where id=:id"
Query q = session.createQuery(s);
q.setString("salary",salary);
q..setString("id",id);
q.executeUpdate();
session.commit();
}
由于
答案 0 :(得分:0)
如果使用Criteria和/或HQL / JPAQL语句执行所有操作,则允许Hibernate缓存这些语句。这样,当刷新或提交会话时,它将发出所有更新语句,这样更有效。
您可能还想询问在每次更新后执行commit()是否是个好主意。