Spring JPA: Sollte der Save () - Methode commit-Daten in die Datenbank?
Ich bin mit Spring data
für mein Projekt, ich bin mit einem Standard - Repository
dass extends CRUD Repository
.
Mein code wie erwartet funktioniert, jedoch wenn ich anrufen repository.save()
die Datenbank ist nicht verändert?
Benötige ich auch, um dann eine commit
nach diesem, um die Datenbank geändert? Oder sollte die repository.save()
Methode zu ändern, die automatisch in die Datenbank?
In der Regel wird die save-Methode sollte gewickelt werden innerhalb einer Transaktion (spring-Daten funktioniert diese transparent für Sie). Wenn Sie schreiben Ihre eigenen Methoden, die Sie brauchen, um Anmerkungen in Ihren ändern Methode mit
Ich kommentierte die main-Methode, die ich Vorschlage, sparen Sie mit einem transactional-annotation, aber es funktioniert immer noch nicht
Konnte Sie nach dem code repository einschließlich der save-Methode + die TransactionManager-Konfiguration?
wie finde ich die Transaktions-manager? Dies ist meine erste Frühlings-Projekt, vielen Dank
Hmm.. ich schlage vor, zu starten, mit der getting-started-guide: Frühling.io/guides/gs/Zugriff auf-Daten-jpa
@Transactional
.Ich kommentierte die main-Methode, die ich Vorschlage, sparen Sie mit einem transactional-annotation, aber es funktioniert immer noch nicht
Konnte Sie nach dem code repository einschließlich der save-Methode + die TransactionManager-Konfiguration?
wie finde ich die Transaktions-manager? Dies ist meine erste Frühlings-Projekt, vielen Dank
Hmm.. ich schlage vor, zu starten, mit der getting-started-guide: Frühling.io/guides/gs/Zugriff auf-Daten-jpa
InformationsquelleAutor java123999 | 2016-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihre Anwendung ausgeführt wird, wird die Entity-Manager im Zusammenhang mit der Faden hält die Kontrolle der veränderten oder hinzugefügten Objekte, die save () - Methode, die genau dies tun, es ist ein Zeichen, das sagt: "diese sollten in der Datenbank gespeichert".
Die Datenbank DML - (insert,update,delete) ist nicht an die Datenbank gesendet, während Sie speichern Dinge erledigt, am Ende, kurz bevor zu Begehen, es verzögert sich bis zum letzten Augenblick.
Es ist möglich, das senden der DML verwendet, um die Datenbank Wann immer Sie wollen mit dem Entity-Manager die flush () - Methode, in der Tat, können Sie das Debuggen der Datenbank anmelden und sehen Sie Ihre Abfragen gehen durch, aber diese änderungen an der Datenbank werden erst sichtbar werden, innerhalb einer DB-Verbindung, bis die commit ausgegeben wird; commit() ist eine Methode, die Transaktion im Zusammenhang mit den Entity-Manager.
In einigen frameworks wie play-1.4.x die commits ausgegeben wird, nachdem die Reaktion anzeigen ist korrekt geparst und gerendert.
Bye,
Hans
InformationsquelleAutor Hans Poo
Wenn Sie konfigurieren, wie diese
Dann alle Methoden, annotiert mit @Transaction wird gestartet, und eine Transaktion übergeben wird, wenn keine exception geworfen wird.
JpaRepository.save()
MethodeDie gleiche Sache... habe nicht ganz gut verstanden, wie Transaktionen funktionieren in diesem Fall.
Wenn Sie fügen Sie eine @Transaction-annotation mit der entsprechenden config wie oben der Frühling container-proxy-Klasse und es wird code hinzufügen, wie Transaktion.begin(), Transaktion.commit() und transaction.rollback() an den proxy, das ist der code, der tatsächlich ausgeführt wird. Oder wenn Sie wie die Feder container fügt den code der Transaktion zu, die Sie Klasse und läuft.
InformationsquelleAutor Essex Boy