Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich dieselbe Verbindung für zwei Abfragen in Spring?

Stellen Sie sicher, dass Ihr DAO in eine Transaktion eingebunden ist (z. B. durch die Verwendung von Springs Interceptors for Transactions). Für beide Anrufe wird dann dieselbe Verbindung verwendet.

Noch besser wäre es, die Transaktionen eine Ebene höher zu haben, auf der Dienstebene.

Dokumentation:http://static .springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html

Aktualisierung: Wenn Sie sich das JavaDoc der DataSourceUtils.getConnection() ansehen -Methode, auf die Sie in Ihrem Update verwiesen haben, werden Sie sehen, dass sie die Verbindung erhält, die dem aktuellen Thread zugeordnet ist:

Demnach sollte es so funktionieren, wie Sie es eingerichtet haben. Ich habe dieses Muster oft verwendet und bin nie auf Probleme wie die von Ihnen beschriebenen gestoßen...

Bitte schaue auch in diesen Thread, dort hat sich jemand mit ähnlichen Problemen beschäftigt:Spring Jdbc deklarative Transaktionen erstellt, aber nichts tun