/ / Czy mybatis opróżnia pamięć podręczną po uruchomieniu wybierz opcję… do aktualizacji domyślnie? - wiosna, mybatis, wiosna-mybatis

czy pamięć podręczna płukania mybatis po uruchomieniu wybierz ... domyślnie? - wiosna, mybatis, wiosna-mybatis

Wiem, że mybatis ma pamięć podręczną i będzie się spłukiwaćpamięć podręczna po domyślnym wykonaniu aktualizacji. Więc czy opróżnia pamięć podręczną po uruchomieniu wybierz ... do aktualizacji? Jeśli odpowiedź brzmi „nie”, to jeśli najpierw wykonam polecenie select, a następnie natychmiast wykonaj polecenie select ... w celu aktualizacji, mybatis uzyska dostęp do bazy danych lub w pamięci podręcznej?

Odpowiedzi:

0 dla odpowiedzi № 1

domyślne zachowanie opróżniania pamięci podręcznej nie jest związane z faktycznie wykonanym SQL, ale z typem Mybatis instrukcja wykonana.

Cokolwiek zawiera SQL <select> lub @Select a potem flushCache właściwość nie jest określona (na @Options w przypadku stylu adnotacji) zachowuje się domyślne zachowanie: brak koloru. i dla <update> lub @Update pamięć podręczna jest domyślnie opróżniana.

W każdym razie w twoim przypadku SELECTi SELECT FOR UPDATE to różne ciągi SQL, a następnie podczas wywoływaniaoba, baza danych zostanie trafiona dla obu, mimo że zestaw wyników jest taki sam, pamięć podręczna kojarzy ciągi SQL i parametry z wynikiem. Zmień ciąg SQL => nowe trafienie, zmień parametry => nowe trafienie. Jeśli oświadczenie <select id=stmt1> i kolejne oświadczenie <select id=stmt2> produkują ten sam ciąg SQL i są wywoływane za pomocąte same wartości parametrów, podczas tej samej sesji i między nimi nie występuje operacja opróżniania, wówczas drugie wywołanie powinno trafić do pamięci podręcznej. Można to sprawdzić, włączając dzienniki debugowania w pakiecie mapper.namespace.

Pamięć podręczna nie działa tak jak w ORM (Hibernacja ..): pamięć podręczna, do której odwołuje się typ jednostki i klucz podstawowy.

Pamięć podręczna trwa najwyżej do zakończenia sesji.

Jest to wygodne przy żądaniu tych samych danychwielokrotnie (ta sama instrukcja / parametry) podczas sesji, nie trzeba przechowywać wyniku do następnego użycia, wystarczy wywołać instrukcję ponownie, pamięć podręczna po prostu zapisze dostęp do bazy danych dla wyniku.