Zwei Methoden zur Parallelitätskontrolle von Datenbankoperationen in Java

Dieser Artikel wurde von Zhang Jian aus der Huawei Cloud Community „ Concurrency Control of Database Operations in Java “ geteilt.

In der modernen Anwendungscodierung wird es aus der Datenbank gefunden, führt einige Geschäftslogikoperationen aus und speichert es schließlich wieder. Im Augenblick:

Person person = personRepo.findById(id);
person.setAge(18);
personRepo.save(person);

Wenn jedoch in einem solchen Geschäftsvorgang ein Thread das Alter ändert, ein anderer Thread den Spitznamen ändert und ihn schließlich wieder speichert, kann dies dazu führen, dass die Änderung eines Alters/Spitznamens überschrieben wird.

Es gibt zwei gängige Lösungen

Fügen Sie vor der Ausführung eine pessimistische Sperre hinzu

Durch verteilte Sperren und andere Methoden wird sichergestellt, dass nur ein Thread gleichzeitig die Daten ändern kann.

Optimistische Umsetzung der Schließidee

Die Versionskontrolle ist eine weitere beliebte Methode zur Bewältigung von Parallelitätsproblemen. Es stellt die Datenkonsistenz sicher, indem die Versionsnummer bei jeder Aktualisierung eines Datensatzes erhöht wird.

In JPA kann dies @Versiondurch Hinzufügen von Anmerkungen zum Feld erreicht werden. Dies erfordert jedoch auch, dass ① ein Versionsfeld in der Datenbank vorhanden sein muss und ② für Aktualisierungsvorgänge nach der Suche die Speichermethode von JPA zum Aktualisieren verwendet werden muss.

Natürlich können Sie auch update_timeeine optimistische Sperrimplementierung simulieren, bei der Sie beim Aktualisieren möglicherweise Bedingungen hinzufügen müssen update_time. update_timeIn extremen Szenarien ist die theoretische Korrektheit nicht so streng.

Klicken Sie hier, um zu folgen und so schnell wie möglich mehr über die neuen Technologien von Huawei Cloud zu erfahren~

 

Broadcom kündigt die Beendigung des bestehenden Deepin-IDE-Versionsupdates des VMware-Partnerprogramms an und ersetzt das alte Erscheinungsbild durch ein neues Erscheinungsbild Zhou Hongyi: Der gebürtige Hongmeng wird definitiv erfolgreich sein WAVE SUMMIT begrüßt seine zehnte Sitzung, Wen Xinyiyan wird die neueste Enthüllung haben! Yakult Company bestätigt, dass 95 G-Daten durchgesickert sind Die beliebteste Lizenz unter den Programmiersprachen im Jahr 2023 „2023 China Open Source Developer Report“ offiziell veröffentlicht Julia 1.10 offiziell veröffentlicht Fedora 40 plant die Vereinheitlichung von /usr/bin und /usr/sbin Rust 1.75 .0-Version
{{o.name}}
{{m.name}}

Acho que você gosta

Origin my.oschina.net/u/4526289/blog/10443380
Recomendado
Clasificación