Ich habe Tabelle und will für jede ID jedes Gehalt Datensatz aktualisierenmehrere Datensätze Updates in einer einzigen Anweisung überwintert
ID FirstName Salary
10 A 10,000
15 B 5000
17 C 7000
19 D 8000
Aber was geschieht Update-Anweisung wird für jede row.Suppose ausgeführt ich 1000 Datensätze habe dann aktualisieren Die Anweisung wird 1000 Mal ausgeführt. Gibt es eine bessere Möglichkeit, dies zu erreichen? ich als tue,
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();
}
Dank
Danke @ robertvoliva Können Sie bitte ein wenig mehr erklären .. "Auf diese Weise, wenn die Sitzung gespült oder festgeschrieben wird, wird es alle Ihre Update-Anweisungen ausgeben" – user1295746
Es wird immer noch 1000 Update-Anweisungen, aber es wird so mit der gleichen Datenbankverbindung und Transaktion. Sie werden nicht den Overhead der Verbindung zur Datenbank durchgehen und eine Transaktion 1000 mal starten/committen, nur einmal. – robertvoliva
Nochmals vielen Dank @robertvoliva. In meinem Code dann, wo ich session.commit() schreiben kann und auch muss ich Code ändern sothat gleiche Sitzung, die gleiche Transaktion wird für 1000 Datensätze verwendet werden. (Es wird nicht für jede 1000 Datensätze neu erstellen) – user1295746