Lassen Sie uns sagen, dass ich eine Zählerfunktion haben, die einen Zähler mit rohen SQL aktualisiert:Concurrency wenn GORM in Grails mit
public void updateCounter() {
executeSql("UPDATE counter SET count_value = count_value + 1 WHERE id = 1;");
}
Die Datenbank würde sicherstellen, dass zwei gleichzeitige Anrufe an den Zähler behandelt werden wie erwartet - das ist alles Anrufe würden den Zähler mit einem Inkrement aktualisieren und keine Updates würden verloren gehen.
Anstatt dies durch Ausgabe eines Raw SQL-Befehls auszuführen, möchte ich GORM verwenden.
public void updateCounter() {
Counter c = Counter.get(1)
c.countValue += 1
c.save()
}
In diesem Fall würde ich davon ausgehen, dass ein Update verloren gehen könnte, wenn zwei Threads die updateCounter() -Methode im selben Moment nennen: Die naive Art und Weise, es zu tun etwas entlang der Linien von wäre. Was ist der korrekte "Grails/GORM-Weg", um dieses Nebeneinanderproblem zu lösen?
was meinst du, wenn du sagst "Deal mit gleichzeitiger Modifikation hier"? Sie meinen, eine "Zusammenführung" oder was sonst noch zu verwenden? Prost – Mulone