Wie genau JdbcTemplate mit Transaction arbeitet zusammen?
-
20-09-2019 - |
Frage
Soweit ich verstand DataSourceTransactionManager bindet eine JDBC-Verbindung aus der angegebenen Datasource zu dem aktuellen Thread, so dass für einen Thread gebundene Verbindung pro Datasource. Wenn es ein Pool von Verbindungen ist, wird es eine der verfügbaren Anschlüsse nehmen.
Danach, wenn ich JdbcTemplate innerhalb einer Transaktion verwenden, wird es eine Verbindung von DataSourceTransactionManager binded erfassen. Ich verstehe richtig, den Mechanismus? A es Anforderungen für die Herstellung von Transaktions-Manager Bean Definition (das heißt Singletons)?
Lösung
Sie haben ziemlich viel beschrieben, wie es funktioniert. Spring Transaktionssynchronisationslogik hat die eher gefürchtete Verantwortung für die Führung Transaktionen synchronisiert über JDBC, Hibernate, JPA, etc, und das Endergebnis ist ziemlich nahtlos.
Transaktionsmanager muss Singletons sein, ja. Jede Transaktion wird von nur einem Transaktionsmanager geführt werden, und wenn Sie mehrere von ihnen haben herumliegen, sind Sie in eine Welt des Schmerzes.
Andere Tipps
Der Standardwert ist 15 Sekunden Lebensdauer der Verbindung aus der Datasource übernommen. Und Sie können max Connection Timeout explizit in Ihrer Verbindung propery angeben.