2011-11-18 14 views
8

Got thru poniżej oświadczenie w http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-cache-nonstrictnieostry odczyt/zapis vs odczyt/zapis w stanie hibernacji?

Jeśli aplikacja tylko sporadycznie musi zaktualizować dane (czyli jeśli jest to bardzo mało prawdopodobne, że dwie transakcje będą próbować aktualizować ten sam element jednocześnie)

co mam z Powyższe stwierdzenie jest takie, że programista aktualizuje obiekt w swoim kodzie, czasami chce zaktualizować pamięć podręczną drugiego poziomu, a czasami nie. Dobrze? Jeśli tak, to jak to osiągnie w swoim kodzie. Chodzi mi o to, gdzie musi podać w swoim kodzie, że tym razem chce aktualizować w pamięci podręcznej, a innym razem nie.

Odpowiedz

10

Źle. Co to oznacza, że ​​strategia ta powinna być stosowana, gdy jednostka jest czasami aktualizowana (więc nie ma zastosowania tylko do odczytu), ale jest bardzo mało prawdopodobne, aby dwie równoczesne transakcje aktualizowały ten sam produkt. Na przykład, jeśli masz tysiące użytkowników uzyskujących dostęp do danych, jedna partia regularnie je aktualizuje, ta opcja jest właściwa do wyboru: tylko jedna transakcja aktualizuje elementy na raz.

+0

Dzięki JB. O tym, co się dzieje, pytam, co to jest fragment kodu, który określa nieostry odczyt/zapis. Jak na moje zrozumienie, powinien on być określony w naszym programie zamiast pliku hbm.xml. –

+1

Nie. Jest to określone w pliku odwzorowania XML encji lub w adnotacji opisującej strategię pamięci podręcznej dla encji. Dlaczego miałby być w kodzie? –

+1

Dzięki JB. Co się stanie, gdy dwie równoczesne transakcje zaktualizują ten sam produkt i jeśli wybierzesz opcję nieostrożnego odczytu/zapisu. Podobnie będzie, gdy dwie równoległe transakcje zaktualizują tę samą pozycję i jeśli wybierzemy opcję odczytu/zapisu –

Powiązane problemy