Zapomnijmy najpierw o hibernacji. Załóżmy, że mam dwie tabele, A & B. Dwie transakcje aktualizują te same rekordy w tych dwóch tabelach, ale txn 1 aktualizację B, a następnie A, podczas gdy txn2 aktualizację A, a następnie B. Jest to typowy przykład impasu. Najczęstszym sposobem uniknięcia tego jest wstępne zdefiniowanie kolejności pozyskiwania zasobów. Na przykład powinniśmy zaktualizować tabelę A, a następnie B.W jaki sposób Hibernacja decyduje o kolejności aktualizacji/wstawienia/usunięcia
Powróć do trybu hibernacji. Gdy aktualizujemy wiele jednostek w jednej sesji, po opróżnieniu sesji, zmiany różnych podmiotów wygenerują odpowiednie instrukcje wstawiania/aktualizacji/usuwania do bazy danych. Czy Hibernate ma jakiś algorytm decydujący o kolejności aktualizacji między jednostkami? Jeśli nie, w jaki sposób Hibernate używał do zapobiegania sytuacji zakleszczenia opisanej w pierwszym akapicie?
Jeśli hibernacja utrzymuje zamówienie, w jaki sposób mogę znać lub kontrolować zamówienie? Nie chcę, aby moja jawna aktualizacja w DB powodowała konflikty z Hibernate i powodowała zakleszczenie.
Proszę przyjąć moje przeprosiny, że z nieznanego powodu tęskniłem za tą odpowiedzą przed :) Wierzę, że wynik twojego egzaminu w kodzie Hibernate'a rzeczywiście daje najbardziej zaufaną odpowiedź do tej pory. Dobre sugestie, szczególnie dla punktu 1 i 2 –