Próbuję nauczyć się JPA danych wiosennych, testując jakąś operację CRUD za pośrednictwem JpaRepository
.
Natknąłem się na dwie metody save
i saveAndFlush
. Nie rozumiem różnicy między tymi dwoma. Podczas wywoływania save
również moje zmiany są zapisywane w bazie danych, więc po co saveAndFlush
.
W zależności od trybu hibernacji, którego używasz (
AUTO
jest to ustawienie domyślne),save
możesz zapisać zmiany w bazie danych od razu lub nie. Kiedy dzwoniszsaveAndFlush
, wymuszasz synchronizację stanu modelu z bazą danych.Jeśli używasz trybu płukania AUTO i używasz aplikacji do najpierw zapisania, a następnie ponownego wybrania danych, nie zobaczysz różnicy w sposobie działania między
save()
i,saveAndFlush()
ponieważ opcja wyboru najpierw wyzwala rzut. Zobacz dokumentację .źródło
save
bytem i znowu tym samym, masz na myśli, że zsave
drugim poleceniem nie rzucisz wyjątku na przykład do duplikacji?save
są idempotentne. Zobacz ten wątek, aby uzyskać więcej informacji.