гибернация нескольких записей обновляется в одном операторе - PullRequest
1 голос
/ 27 марта 2012

У меня есть таблица, и я хочу обновить каждую запись о зарплате для каждого идентификатора

ID      FirstName     Salary
10      A             10,000
15      B             5000
17      C             7000
19      D             8000

Но что происходит, оператор обновления выполняется для каждой строки. Предположим, у меня есть 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();
}

Спасибо

1 Ответ

0 голосов
/ 27 марта 2012

Если вы делаете все, используя операторы Criteria и / или HQL / JPAQL, вы разрешите Hibernate кэшировать эти операторы.Таким образом, когда сеанс сбрасывается или фиксируется, он выдаст все ваши операторы обновления, что более эффективно.

Возможно, вы захотите задать вопрос, является ли выполнение коммита () после каждого обновления хорошей идеей.

...