2012-01-01 17 views
6

Wiem, jakie jest optymistyczne i pesymistyczne zamknięcie, ale kiedy piszesz kod java, w jaki sposób to robisz? Załóżmy, że używam Oracle z Javą, czy mam jakieś metody w JDBC, które pomogą mi to zrobić? Jak to skonfigurować? Wszelkie wskazówki zostaną docenione.Jak kodować optymistyczne i pesymistyczne blokowanie z kodu java

+0

Blokowanie Java i JDBC nie są powiązane w sposób, jakiego szukasz. W czym problem próbujesz rozwiązać? Blokady Java są zamkami wielokrotnego dostępu, które można uzyskać za pomocą "zsynchronizowanego" słowa kluczowego. Więc czego dokładnie szukasz? – Pavan

+0

Szukam blokowania bazy danych – user2434

Odpowiedz

3

Załóżmy, że używam Oracle z Javą, czy mam jakieś metody w JDBC, które mi w tym pomogą?

powinien dostarczyć ci wskazówek, jak to zrobić.

Brak konkretnych metod JDBC. Raczej osiągniesz optymistyczne blokowanie w ten sposób, że projektujesz zapytania/aktualizacje SQL i gdzie umieszczasz granice transakcji.

11

można zaimplementować optymistyczne blokad w tabeli DB w ten sposób (tak optymistyczne zamek odbywa się w Hibernate):

  1. Dodaj całkowitą „wersja” kolumnę do tabeli.
  2. Zwiększ wartość tej kolumny przy każdej aktualizacji odpowiedniego wiersza.
  3. Aby uzyskać blokadę, po prostu przeczytaj wartość "wersja" wiersza.
  4. Dodaj warunek "version = winning_version" do klauzuli z wyciągiem aktualizacji. Sprawdź liczbę uszkodzonych wierszy po aktualizacji. Jeśli nie wystąpiły problemy z wierszami - ktoś już zmodyfikował wpis.

Twój aktualizacja powinna wyglądać

UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2 

Oczywiście mechanizm ten działa tylko wtedy, gdy wszystkie strony po nim, w przeciwieństwie do DBMS świadczonych zamków, które nie wymagają specjalnego traktowania.

Mam nadzieję, że to pomoże.