Verschil tussen opslaan en opslaanAndFlush in Spring data jpa

Ik probeer lentegegevens JPA te leren door een CRUD-bewerking te testen via JpaRepository.

Ik kwam twee methoden saveen saveAndFlushtegen.
Ik snap het verschil niet tussen deze twee. Bij het aanroepen van saveworden ook mijn wijzigingen opgeslagen in de database, dus wat is het nut van saveAndFlush.


Antwoord 1, autoriteit 100%

Op saveAndFlushworden wijzigingen in deze opdracht onmiddellijk naar DB gespoeld. Met saveis dit niet per se waar, en kan het alleen in het geheugen blijven, totdat de commando’s flushof commitworden gegeven.

Maar houd er rekening mee dat, zelfs als u de wijzigingen in de transactie doorspoelt en ze niet vastlegt, de wijzigingen nog steeds nietzichtbaar zullen zijn voor de externe transacties tot de vastlegging in deze transactie.

p>

In jouw geval gebruik je waarschijnlijk een soort transactiemechanisme, dat de opdracht commitvoor je afgeeft als alles goed werkt.


Antwoord 2, autoriteit 29%

Afhankelijk van de hibernate flush-modus die u gebruikt (AUTOis de standaardinstelling) kan saveuw wijzigingen al dan niet meteen naar de DB schrijven. Wanneer u saveAndFlushaanroept, dwingt u de synchronisatie van uw modelstatus met de DB af.

Als u de spoelmodus AUTO gebruikt en uw applicatie gebruikt om eerst de gegevens op te slaan en vervolgens opnieuw te selecteren, ziet u geen verschil in bahvior tussen save()en saveAndFlush()omdat de select eerst een flush triggert. Zie de documentatie.

Other episodes