W saveAndFlush zmiany w tym poleceniu są natychmiast odświeżane do bazy danych. W przypadku zapisu nie musi to być prawda i może pozostać w pamięci tylko do momentu wydawania polecenia flush lub commit.
Należy jednak zauważyć, że nawet jeśli odświeżysz zmiany w transakcji i ich nie zatwierdzisz, zmiany nadal nie są widoczne dla transakcji zewnętrznej, dopóki nie zostaną zatwierdzone w tej transakcji.
W twoim przypadku możesz używać jakiegoś mechanizmu transakcyjnego, który wyda ci komendę commit, jeśli wszystko jest w porządku.
Użyj metody JPA saveAndFlush()
Implementuj Increase i Modify
Uwaga: Warstwa sterująca musi filtrować parametry,
saveAndFlush Ta metoda najpierw decyduje, czy użyć metody persist czy merge na podstawie ID==null Zdecyduje, czy użyć wstawienia, czy aktualizacji w zależności od tego, czy ID jest zapisane w bazie danych
Analizujemy różnicę, dekompilując kod źródłowy Javy
IDEA_ skrót, aby znaleźć implementację interfejsu
Styl IDEA ctrl + alt +B
Styl zaćmienia ctrl +T
Interfejs zapisu:
Metoda wdrożenia:
Interfejs saveAndFlush:
Metoda wdrożenia:
Jak widać w kodzie źródłowym, wywołując metodę saveAndFlush,saveAndFlush wywołuje naszą metodę zapisu, a następnie metodę flush。
(Koniec)
|