J'essaie d'apprendre les données de printemps JPA en testant certaines opérations CRUD via JpaRepository
.
Je suis tombé sur deux méthodes save
et saveAndFlush
. Je ne comprends pas la différence entre ces deux. En appelant save
aussi mes modifications sont enregistrées dans la base de données, alors à quoi sert saveAndFlush
.
Selon le mode de vidage d'hibernation que vous utilisez (il
AUTO
s'agit de la valeur par défaut),save
vous pouvez ou non écrire vos modifications directement dans la base de données. Lorsque vous appelez,saveAndFlush
vous appliquez la synchronisation de l'état de votre modèle avec la base de données.Si vous utilisez le mode de vidage AUTO et que vous utilisez votre application pour d'abord enregistrer puis sélectionner à nouveau les données, vous ne verrez pas de différence de bahvior entre
save()
etsaveAndFlush()
car la sélection déclenche d'abord un vidage . Voir la documentation .la source
save
une entité et encore la même, vous voulez dire quesave
la deuxième commande ne lancera pas d'exception pour la duplication par exemple ??save
sont idempotents. Voir ce fil pour plus de détails.