Wenn ich @Transactional in meinem DAO verwende, werden alle meine EntityManager-Abfragen mit Commit gekapselt und geschlossen? Oder muss ich die Spring-Vorlage (JPA-Vorlage, Hibernate-Vorlage) verwenden? Was ist der Unterschied zwischen der Verwendung von @Transactional und der Spring-Vorlage?Was ist der Unterschied zwischen der Verwendung von @Transactional und Spring-Vorlage?
Antwort
Der Unterschied besteht darin, dass Annotation-basierte mit der Transaktion Abgrenzung (@Transactional
) und die TransactionTemplate
ist, dass die Verwendung von TransactionTemplate
Paaren Sie Spring Transaktion Infrastruktur und bedeutet, dass Sie programmatisch den Transaktionsstatus behandelt Einstellung, wenn die Transaktion rückgängig gemacht werden soll. Sie können die anmerkungsbasierte Transaktionsabgrenzung mit der Spring-Transaktionsunterstützung oder mit AspectJ-Transaktionen außerhalb eines Spring-Containers verwenden.
Siehe auch die online documentation for transactions in Spring.
Die Spring-Vorlagenklassen dienen nur dazu, eine bessere API für die Ausführung von Persistenzoperationen bereitzustellen - sie befassen sich nicht mit Transaktionen. Wenn Sie transaktionale Operationen ausführen möchten, müssen Sie entweder die Annotationsmethode @Transactional verwenden oder TransactionTemplate verwenden.
meinst du usin @transactional wird meine Dao-Methoden mit commit, close oder bei Verwendung der Feder-Transaktionsvorlage (jpatemplate, hibernatetemplate) kapseln?
Wenn Sie @transactional mit der richtigen Spring-Konfiguration verwenden, erkennt Spring, dass die Methode eine Transaktion benötigt und die Transaktionserstellung, das Commit und das Schließen für Sie übernimmt.
Wie skaffman sagte, ist @transactional nicht direkt an die Template-Klassen gebunden. Sie können für jede Klasse verwendet werden, die Transaktionen benötigen.
- 1. Was ist der Unterschied zwischen der Verwendung externer und # Headerdateien?
- 2. Was ist der Unterschied zwischen `==` und `ist`?
- 3. Was ist der Unterschied zwischen $ und $$?
- 4. Was ist der Unterschied zwischen:
- 5. Was ist der Unterschied zwischen Verwendung und extern?
- 6. Was ist der Unterschied zwischen/* ... */und/** ... */
- 7. Was ist der Unterschied zwischen Difftime und '-'?
- 8. Was ist der Unterschied zwischen der Rückgabe von bind und dem Ergebnis der Verwendung von function()
- 9. Was ist der Unterschied zwischen `&` und `ref`?
- 10. Was ist die Verwendung von .exp und was ist der Unterschied zwischen .lib und .dll
- 11. Was ist der Unterschied zwischen der Verwendung von "" und "" und() beim Deklarieren von Variablen?
- 12. Was ist der Unterschied zwischen:.! und: r !?
- 13. Was ist der Unterschied zwischen Verilog! und ~?
- 14. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 15. Was ist der Unterschied zwischen $ (...) und `...`
- 16. Was ist der Unterschied zwischen .Equals und ==
- 17. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 18. Was ist der Unterschied zwischen + = und = +?
- 19. Was ist der Unterschied zwischen? und ? = Nil
- 20. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 21. Was ist der Unterschied zwischen der Verwendung und der Nichtverwendung von Anweisungen mit DbContext [Code zuerst]?
- 22. Was ist der Unterschied zwischen der Verwendung von Dekoratoren und der Erweiterung einer Unterklasse durch Vererbung?
- 23. Was ist der Unterschied zwischen der Verwendung von onClick und dem onclick-Attribut von jQuery?
- 24. Was ist der Unterschied zwischen ist HttpResponseMessage und HttpResponseException
- 25. Was ist der Unterschied zwischen der JSP und der JSTL?
- 26. Was ist der Unterschied zwischen RewriteRule ist und umleiten 301
- 27. Was ist der Unterschied zwischen PS1 und PROMPT_COMMAND ist
- 28. Was ist der Unterschied zwischen SimpleNamespace und der leeren Klassendefinition?
- 29. , was der Unterschied zwischen der Verwendung von ATOMIC_FLAG_INIT und std :: atomic_flag ist :: clear
- 30. Entity Framework - Was ist der Unterschied zwischen der Verwendung von Include/eager loading und lazy loading?