sql >> Database >  >> RDS >> Mysql

Hibernate optimistische locking..hoe het werkt?

Om precies te zijn, je bedoelt niet optimistische vergrendeling, maar optimistische gelijktijdigheid (zonder een slot). Het gebruik van een tijdstempel voor versie is alleen voor ondersteuning van legacy databases, omdat een moderne database (althans theoretisch) sneller kan werken dan de nauwkeurigheid van het opslaan een tijdstempel.

Het gebruik van de integer version-eigenschap is heel eenvoudig:

  • Bij invoegen:versie instellen op 1
  • Bij updaten en verwijderen:verhoog versie met 1 en voeg "waar [email protected] " aan elke sql-instructie. Retourneer het aantal gewijzigde records. Geef een StaleObjectStateException wanneer het aantal gewijzigde records anders is dan verwacht.

Persoonlijk zou ik in een niet-legacy situatie geen twee afzonderlijke applicaties maken die dezelfde gegevens schrijven, omdat dat betekent dat bedrijfslogica moet worden gedupliceerd en wijzigingen moeten worden toegepast op twee applicaties, ook als de wijziging slechts voor één van de de toepassingen.




  1. Hoe kan ik mySQL Replace() gebruiken om strings in meerdere records te vervangen?

  2. pg_restore Alternatieven - PostgreSQL-back-up en automatisch herstel met ClusterControl

  3. Een serverloze GraphQL-API maken voor MySQL, Postgres en Aurora

  4. Waarden uit de MYSQL-tabel bijwerken zonder de pagina opnieuw te laden?