Inhaltsverzeichnis
Einführung in DataSourceUitls
DataSourceUitls ruft Connection ab
getConnection-Methode
Interne Implementierung
doGetConnection-Methode
fetchConnection-Methode
DataSourceUitls gibt Connection frei
ReleaseConnection-Methode
doReleaseConnection-Methode
DataSourceUitls schließt Verbindung
doCloseConnection-Methode
Heim Java javaLernprogramm Einführung und Methoden von DataSourceUitls

Einführung und Methoden von DataSourceUitls

Jul 26, 2017 pm 05:01 PM
connection 关闭

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());
        }
    }
Nach dem Login kopieren

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;
    }
Nach dem Login kopieren

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);
        }
    }
Nach dem Login kopieren

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);
    }
Nach dem Login kopieren

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();
        }
    }
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie schalte ich die vom 360 Browser empfohlenen Anzeigen aus? Wie deaktiviere ich die vom 360-Browser empfohlenen Anzeigen auf dem PC? Wie schalte ich die vom 360 Browser empfohlenen Anzeigen aus? Wie deaktiviere ich die vom 360-Browser empfohlenen Anzeigen auf dem PC? Mar 14, 2024 am 09:16 AM

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

So schließen Sie die passwortfreie Zahlung in Kuaishou. Kuaishou-Tutorial zum Schließen der passwortfreien Zahlung So schließen Sie die passwortfreie Zahlung in Kuaishou. Kuaishou-Tutorial zum Schließen der passwortfreien Zahlung Mar 23, 2024 pm 09:21 PM

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

Wie schalte ich Sina News Express aus? Wie schalte ich Sina News Express aus? Mar 12, 2024 pm 09:46 PM

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

Ausführliche Erklärung zum Deaktivieren des Windows 11-Sicherheitscenters Ausführliche Erklärung zum Deaktivieren des Windows 11-Sicherheitscenters Mar 27, 2024 pm 03:27 PM

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

Ausführliche Erklärung zum Deaktivieren des Echtzeitschutzes im Windows-Sicherheitscenter Ausführliche Erklärung zum Deaktivieren des Echtzeitschutzes im Windows-Sicherheitscenter Mar 27, 2024 pm 02:30 PM

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

So deaktivieren Sie das Sicherheitscenter in Windows 11 So deaktivieren Sie das Sicherheitscenter in Windows 11 Mar 28, 2024 am 10:21 AM

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

Wo kann man Dolby Atmos in opporeno5 deaktivieren?_So deaktivieren Sie Dolby Atmos in opporeno5 Wo kann man Dolby Atmos in opporeno5 deaktivieren?_So deaktivieren Sie Dolby Atmos in opporeno5 Mar 25, 2024 pm 04:41 PM

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.

So deaktivieren Sie die Funktion „Jetzt verwenden, später bezahlen' auf Pinduoduo. So deaktivieren Sie die Funktion „Jetzt verwenden, später bezahlen' auf Pinduoduo So deaktivieren Sie die Funktion „Jetzt verwenden, später bezahlen' auf Pinduoduo. So deaktivieren Sie die Funktion „Jetzt verwenden, später bezahlen' auf Pinduoduo Mar 12, 2024 pm 04:07 PM

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.

See all articles