So verhindern Sie Parallelitätsprobleme in UPDATE über iBatis

Unsere Java EE-Webanwendung führt Datenbankoperationen mit iBatis (ORM) aus. Der Ablauf der Datenbankoperation ist wie folgt

Fließen : JSP ---> Aktion ---> ServiceIMpl ---> DaoImpl ----> Aufruf der Aktualisierungsabfrage über 'IBatis

Hinweis: Die Action-, Service- und DAO-Klassen werden mithilfe der Abhängigkeitsinjektionstechnik von Spring 2.5 instanziiert. Wir benutzen Struts2.

Problem: 2 gleichzeitige Benutzer suchen nach demselben Datensatz und Benutzer1 aktualisiert Attribut1, während Benutzer2 Attribut2 aktualisiert. Benutzer1 klickt zuerst auf "Speichern" und Benutzer2 klickt dann auf "Speichern" (sie folgen einander mit einem Unterschied von einigen Sekunden). Wenn wir die Daten in der Datenbank sehen, ist nur die Aktualisierung von Benutzer1 vorhanden. In den Überwachungsspalten wird auch nur die Aktualisierung von Benutzer1 angezeigt. Die Aktualisierung von Benutzer2 für Attribut2 wird nicht durchgeführt. Gleichzeitig werden keine Ausnahmen ausgelöst.

Wir haben versucht, die Transaktion begin und commit in iBatis zu verwenden, um die in der SQLMAP-XML definierte Aktualisierungsabfrage aufzurufen. Das gleiche Problem besteht weiterhin. Wir haben auch versucht, diese Transaktionsbefehle zu entfernen, das Problem besteht jedoch weiterhin.

Sollten wir etwas Besonderes / Anderes tun, um die Parallelität während der Updates zu behandeln? Würden sich ORMs wie iBatis nicht selbst darum kümmern?

Zusätzliche Information: Weitere Untersuchungen ergaben die folgenden Informationen.

Wenn Benutzer1 und Benutzer2 auf einen Datensatz klicken, werden die vollständigen Daten zur Anzeige abgerufen.

Wenn nun sowohl Benutzer1 als auch Benutzer2 einige Attribute ändern und (gleichzeitig) auf Speichern klicken, sagen wir, dass zuerst die Daten von Benutzer1 aktualisiert werden und dann, während die Daten von Benutzer2 aktualisiert werden, die bereits aktualisierten Daten von Benutzer1 überschrieben werden und verloren gehen.

What approach is usually followed in such screens to handle such scenarios ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage