Aby być precyzyjnym, nie masz na myśli optymistycznego blokowania, ale optymistyczną współbieżność (bez blokady). Używanie znacznika czasu dla wersji służy tylko do obsługi starszej bazy danych, ponieważ nowoczesna baza danych może (przynajmniej teoretycznie) działać szybciej niż dokładność jej przechowywania znacznik czasu.
Użycie własności integer version jest bardzo proste:
- Przy wstawce:ustaw wersję na 1
- Podczas aktualizacji i usunięcia:zwiększ wersję o 1 i dodaj „gdzie [email protected] " do każdej instrukcji sql. Zwróć liczbę zmienionych rekordów. Zgłoś StaleObjectStateException, gdy liczba zmienionych rekordów jest inna niż oczekiwana.
Osobiście nie stworzyłbym dwóch oddzielnych aplikacji zapisujących te same dane w sytuacji nie starszej, ponieważ oznacza to, że logika biznesowa musi zostać zduplikowana, a zmiany muszą zostać zastosowane do dwóch aplikacji, również wtedy, gdy zmiana dotyczy tylko jednej z aplikacje.