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)?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top