Einführung und Methoden von DataSourceUitls
Einführung in DataSourceUitls
Die DataSourceUitls-Klasse befindet sich im Paket org.springframework.jdbc.datasource. Sie bietet viele statische Methoden zum Abrufen einer JDBC-Verbindung von einer javax.sql.DataSource und bietet Spring-Transaktionsverwaltung Unterstützung.
Innerhalb der JdbcTemplate-Klasse wird DataSourceUtils mehrfach verwendet. Tatsächlich können wir DataSourceUitls auch direkt im Code verwenden, um JDBC zu betreiben.
DataSourceUitls ruft Connection ab
getConnection-Methode
Interne Implementierung
public static Connection getConnection(DataSource dataSource) throws CannotGetJdbcConnectionException { try { return doGetConnection(dataSource); } catch (SQLException ex) { throw new CannotGetJdbcConnectionException("Failed to obtain JDBC Connection", ex); } catch (IllegalStateException ex) { throw new CannotGetJdbcConnectionException("Failed to obtain JDBC Connection: " + ex.getMessage()); } }
Es ist ersichtlich, dass durch Übergabe einer angegebenen DataSource eine Verbindung erstellt werden kann erhalten, wird der Erfassungsprozess durch die doGetConnection-Methode implementiert. Wenn SQLException und IllegalStateException ausgelöst werden, wickeln Sie sie in CannotGetJdbcConnectionException ein. Tatsächlich können nur SQLException und IllegalStateException ausgelöst werden. Wenn wir uns den Quellcode von CannotGetJdbcConnectionException ansehen, können wir feststellen, dass CannotGetJdbcConnectionException tatsächlich eine Unterklasse von DataAccessException ist. Daher kann man sagen, dass getConnection die ausgelöste Ausnahme einheitlich in Springs DataAccessException kapselt.
doGetConnection-Methode
Interne Implementierung
public static Connection doGetConnection(DataSource dataSource) throws SQLException { Assert.notNull(dataSource, "No DataSource specified"); ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(dataSource); if (conHolder != null && (conHolder.hasConnection() || conHolder.isSynchronizedWithTransaction())) { conHolder.requested(); if (!conHolder.hasConnection()) { logger.debug("Fetching resumed JDBC Connection from DataSource"); conHolder.setConnection(fetchConnection(dataSource)); } return conHolder.getConnection(); } // Else we either got no holder or an empty thread-bound holder here. logger.debug("Fetching JDBC Connection from DataSource"); Connection con = fetchConnection(dataSource); if (TransactionSynchronizationManager.isSynchronizationActive()) { logger.debug("Registering transaction synchronization for JDBC Connection"); // Use same Connection for further JDBC actions within the transaction. // Thread-bound object will get removed by synchronization at transaction completion. ConnectionHolder holderToUse = conHolder; if (holderToUse == null) { holderToUse = new ConnectionHolder(con); } else { holderToUse.setConnection(con); } holderToUse.requested(); TransactionSynchronizationManager.registerSynchronization( new ConnectionSynchronization(holderToUse, dataSource)); holderToUse.setSynchronizedWithTransaction(true); if (holderToUse != conHolder) { TransactionSynchronizationManager.bindResource(dataSource, holderToUse); } } return con; }
Die doGetConnection-Methode ist die Kernmethode für den tatsächlichen Vorgang zum Erhalten einer Verbindung. Aus dem Quellcode kann geschlossen werden, dass eine neue Verbindung erstellt wird, wenn die Transaktionssynchronisierung des aktuellen Threads aktiv ist und die Spring-Transaktionsverwaltungsunterstützung nur zur Verbindung hinzugefügt wird erstellt; wenn eine entsprechende Verbindung für den aktuellen Thread vorhanden ist, dann gibt es eine aktuelle Transaktionsverwaltungszuordnung.
fetchConnection-Methode
fetchConnection ist eine private Methode, die nicht für die Öffentlichkeit zugänglich ist. Sie führt tatsächlich eine einfache Funktion aus: Erstellen einer neuen Verbindung aus der aktuellen DastaSource. Wenn die Erstellung fehlschlägt, tritt eine IllegalStateException auf ausgelöst, was darauf hinweist, dass keine neue Verbindung hergestellt werden kann.
DataSourceUitls gibt Connection frei
ReleaseConnection-Methode
Interne Implementierung
public static void releaseConnection(@Nullable Connection con, @Nullable DataSource dataSource) { try { doReleaseConnection(con, dataSource); } catch (SQLException ex) { logger.debug("Could not close JDBC Connection", ex); } catch (Throwable ex) { logger.debug("Unexpected exception on closing JDBC Connection", ex); } }
Die spezifische Implementierung der ReleaseConnection-Methode wird von doReleaseConnection verwaltet. Wenn eine Ausnahme ausgelöst wird, wird diese nur im Protokoll debuggt und nicht extern ausgelöst. Beide Parameter dieser Methode sind NULL.
Wenn con NULL ist, wird dieser Aufruf ignoriert, während der andere Parameter NULL sein darf.
doReleaseConnection-Methode
Interne Implementierung
public static void doReleaseConnection(@Nullable Connection con, @Nullable DataSource dataSource) throws SQLException { if (con == null) { return; } if (dataSource != null) { ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(dataSource); if (conHolder != null && connectionEquals(conHolder, con)) { // It's the transactional Connection: Don't close it. conHolder.released(); return; } } logger.debug("Returning JDBC Connection to DataSource"); doCloseConnection(con, dataSource); }
Die doReleaseConnection-Methode ist die Methode, die die Verbindung tatsächlich freigibt. Im Vergleich zur releaseConnection-Methode schließt sie die Verarbeitung der beiden eingehenden Daten ab Die Prüfsumme der Parameter löst eine Ausnahme einer niedrigeren Ebene aus. Wenn dataSource nicht NULL ist, geben Sie die aktuelle Verbindung frei, die von diesem ConnectionHolder beibehalten wird, damit die aktuelle Verbindung wiederverwendet werden kann. Dies ist sehr hilfreich, um die Leistung von JDBC-Vorgängen zu verbessern. Wenn dataSource null ist, schließen Sie die Verbindung direkt.
DataSourceUitls schließt Verbindung
doCloseConnection-Methode
Interne Implementierung
public static void doCloseConnection(Connection con, @Nullable DataSource dataSource) throws SQLException { if (!(dataSource instanceof SmartDataSource) || ((SmartDataSource) dataSource).shouldClose(con)) { con.close(); } }
In der doReleaseConnection-Methode haben wir gelernt, dass die Datenquelle NULL ist, wenn sie NULL ist führt die doCloseConnection-Methode aus. Tatsächlich wird die Verbindung nur dann tatsächlich geschlossen, wenn die dataSource die Schnittstelle org.springframework.jdbc.datasource.SmartDataSource nicht implementiert oder wenn die dataSource die Schnittstelle org.springframework.jdbc.datasource.SmartDataSource implementiert und geschlossen werden darf.
Die Schnittstelle org.springframework.jdbc.datasource.SmartDataSource ist eine Erweiterung der Schnittstelle javax.sql.DataSource und gibt die JDbc-Verbindung in unverpackter Form zurück. Klassen, die diese Schnittstelle implementieren, können abfragen, ob die Verbindung nach Abschluss des Vorgangs geschlossen werden soll. Solche Prüfungen werden automatisch in Srping und DataSourceUitls und JdbcTemplate durchgeführt.
Das obige ist der detaillierte Inhalt vonEinführung und Methoden von DataSourceUitls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie schalte ich die vom 360 Browser empfohlenen Anzeigen aus? Ich glaube, dass viele Benutzer den 360-Browser verwenden, aber dieser Browser zeigt manchmal Werbung an, was viele Benutzer sehr verunsichert. Lassen Sie diese Website den Benutzern sorgfältig erklären, wie Sie die vom 360-Browser empfohlenen Anzeigen auf Ihrem Computer deaktivieren können. Wie schalte ich die vom 360-Browser empfohlenen Anzeigen auf Ihrem Computer aus? Methode 1: 1. Öffnen Sie den 360 Safe Browser. 2. Suchen Sie das Logo „drei horizontale Balken“ in der oberen rechten Ecke und klicken Sie auf [Einstellungen]. 3. Suchen Sie in der Taskleiste auf der linken Seite der Popup-Oberfläche nach [Lab] und aktivieren Sie die Funktion „360-Hotspot-Informationen aktivieren“. Methode 2: 1. Erster Doppelklick

Kuaishou ist ein ausgezeichneter Videoplayer, der uns im täglichen Leben sehr helfen kann, insbesondere beim Kauf der benötigten Waren auf der Plattform . Jetzt müssen wir es abbrechen. Wie können wir die passwortfreie Zahlung effektiv abbrechen? Werfen wir einen Blick auf den gesamten Leitfaden auf dieser Website. Ich hoffe, er kann allen helfen. Anleitung zum Schließen der passwortfreien Zahlung in Kuaishou 1. Öffnen Sie die Kuaishou-App und klicken Sie auf die drei horizontalen Linien in der oberen linken Ecke. 2. Klicken Sie auf Kuaishou Store. 3. Suchen Sie in der Optionsleiste oben nach „Passwortfreie Zahlung“ und klicken Sie darauf. 4. Klicken Sie, um zu unterstützen

Die Sina News-Software bietet viele Schlagzeileninformationen, die im Wesentlichen von der offiziellen Plattform bereitgestellt werden. Der Inhalt jedes Nachrichtenartikels ist authentisch. Sie können mit einem Klick nach oben und unten wischen, um die Leseatmosphäre zu verbessern . Geben Sie Ihre Mobiltelefonnummer ein, um sich online anzumelden. Die 24-Stunden-Updates werden nicht wiederholt. Wischen Sie nach oben und unten, um sie auszuwählen Wenn Sie interessiert sind, können Sie die Nachrichten-Express-Funktion auch deaktivieren. Sie können sie jederzeit öffnen und eine Vorschau der umfangreichen Schlagzeilen anzeigen Details zu Sina News-Benutzern online. Suchen Sie nach Sina News und klicken Sie auf die untere rechte Ecke

Im Betriebssystem Windows 11 ist das Sicherheitscenter eine wichtige Funktion, die Benutzern hilft, den Sicherheitsstatus des Systems zu überwachen, sich gegen Malware zu verteidigen und die Privatsphäre zu schützen. Manchmal müssen Benutzer das Sicherheitscenter jedoch möglicherweise vorübergehend deaktivieren, beispielsweise wenn sie bestimmte Software installieren oder eine Systemoptimierung durchführen. In diesem Artikel erfahren Sie im Detail, wie Sie das Windows 11-Sicherheitscenter deaktivieren, damit Sie das System korrekt und sicher bedienen können. 1. So schalten Sie das Sicherheitscenter von Windows 11 aus Unter Windows 11 funktioniert das Ausschalten des Sicherheitscenters nicht

Als eines der Betriebssysteme mit der größten Benutzerzahl weltweit wurde das Windows-Betriebssystem schon immer von den Benutzern bevorzugt. Bei der Verwendung von Windows-Systemen können Benutzer jedoch mit zahlreichen Sicherheitsrisiken konfrontiert werden, wie z. B. Virenangriffen, Malware und anderen Bedrohungen. Um die Systemsicherheit zu stärken, verfügen Windows-Systeme über zahlreiche integrierte Sicherheitsschutzmechanismen, darunter die Echtzeitschutzfunktion des Windows Security Center. Heute stellen wir Ihnen im Detail vor, wie Sie den Echtzeitschutz im Windows-Sicherheitscenter deaktivieren. Lassen Sie uns zunächst einmal

Windows 11 ist die neueste von Microsoft eingeführte Betriebssystemversion. Im Vergleich zu früheren Versionen verfügt Windows 11 über eine strengere Verwaltung und Überwachung der Systemsicherheit. Eine der wichtigen Funktionen ist das Sicherheitscenter. Security Center kann Benutzern dabei helfen, den Sicherheitsstatus des Systems zu verwalten und zu überwachen, um sicherzustellen, dass das System vor Malware und anderen Sicherheitsbedrohungen geschützt ist. Obwohl Security Center für den Schutz der Systemsicherheit wichtig ist, möchten Benutzer das Security Center manchmal aus persönlichen Gründen oder aus anderen Gründen deaktivieren. In diesem Artikel wird die Verwendung von W vorgestellt

1. Klicken Sie in den Telefoneinstellungen auf Ton und Vibration. 2. Klicken Sie auf Dolby Atmos. 3. Schalten Sie den Schalter hinter Dolby Atmos aus.

Wie kann ich die Funktion „Jetzt nutzen, später bezahlen“ auf Pinduoduo deaktivieren? Pinduoduo ist eine sehr intelligente Software, mit der Benutzer Dinge online kaufen und an ihre Haustür liefern lassen können. Mit dieser Software können Benutzer die Produkte auswählen, die sie kaufen möchten Damit Benutzer diese Software verwenden können, wurde eine Funktion „Jetzt verwenden, später bezahlen“ eingeführt. Viele Benutzer möchten diese Funktion abbrechen. Der folgende Editor hat Methoden zum Abbrechen der Funktion „Jetzt verwenden, später bezahlen“ zusammengestellt. So deaktivieren Sie die Funktion „Jetzt verwenden, später bezahlen“ auf Pinduoduo 1. Klicken Sie nach dem Aufrufen der persönlichen Homepage von Pinduoduo auf „Einstellungen“. 2. Klicken Sie in den Einstellungen auf „Einstellungen jetzt verwenden, später bezahlen“. 3.
