Abych byl přesný, nemáte na mysli optimistické zamykání, ale optimistický souběžnost (bez zámku). Použití časového razítka pro verzi je pouze pro podporu starší databáze, protože moderní databáze může (alespoň teoreticky) pracovat rychleji, než je přesnost uložení časové razítko.
Použití vlastnosti integer version je velmi jednoduché:
- Při vložení:nastavte verzi na 1
- Při aktualizaci a odstranění:zvyšte verzi o 1 a připojte „kde [email protected] " do každého příkazu SQL. Vraťte počet změněných záznamů. Pokud je počet změněných záznamů jiný, než se očekávalo, použijte výjimku StaleObjectStateException.
Osobně bych nevytvářel dvě samostatné aplikace zapisující stejná data v situaci, která není starší, protože to znamená, že obchodní logika musí být duplikována a změny musí být aplikovány na dvě aplikace, i když je změna relevantní pouze pro jednu z aplikace.