Table des matières
Introduction à DataSourceUitls
DataSourceUitls obtient Connection
Méthode getConnection
Implémentation interne
Méthode doGetConnection
Méthode fetchConnection
DataSourceUitls publie Connection
Méthode releaseConnection
Méthode doReleaseConnection
DataSourceUitls ferme la connexion
Méthode doCloseConnection
Maison Java javaDidacticiel Introduction et méthodes de DataSourceUitls

Introduction et méthodes de DataSourceUitls

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

Introduction à DataSourceUitls

La classe DataSourceUitls se trouve sous le package org.springframework.jdbc.datasource. Elle fournit de nombreuses méthodes statiques pour obtenir une connexion JDBC à partir d'un javax.sql.DataSource et assure la gestion des transactions Spring. soutien.

Dans la classe JdbcTemplate, DataSourceUtils est utilisé plusieurs fois. En fait, nous pouvons également utiliser DataSourceUitls directement dans le code pour faire fonctionner Jdbc.

DataSourceUitls obtient Connection

Méthode getConnection

Implémentation interne

    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());
        }
    }
Copier après la connexion

On peut voir qu'en passant une DataSource spécifiée, une connexion peut être obtenu, le processus d'acquisition est mis en œuvre par la méthode doGetConnection. Si SQLException et IllegalStateException sont levées, enveloppez-les dans CannotGetJdbcConnectionException. En fait, seules SQLException et IllegalStateException peuvent être levées. En examinant le code source de CannotGetJdbcConnectionException, nous pouvons constater que CannotGetJdbcConnectionException est en fait une sous-classe de DataAccessException. Par conséquent, on peut dire que getConnection encapsulera uniformément l'exception levée dans DataAccessException de Spring.

Méthode doGetConnection

Implémentation interne

    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;
    }
Copier après la connexion

La méthode doGetConnection est la méthode de base pour l'opération réelle permettant d'obtenir la connexion. On peut conclure du code source que s'il n'y a pas de connexion liée au thread actuel, une nouvelle connexion sera créée. Si la synchronisation des transactions du thread actuel est active, alors la prise en charge de la gestion des transactions Spring sera simplement ajoutée à la connexion. créé ; si Si une connexion correspondante existe pour le thread actuel, alors il existe une allocation de gestion des transactions en cours.

Méthode fetchConnection

fetchConnection est une méthode privée qui n'est pas ouverte au public. Elle remplit en fait une fonction simple : créer une nouvelle connexion à partir de la DastaSource actuelle. Si la création échoue, une IllegalStateException. est lancé, indiquant qu'une nouvelle connexion ne peut pas être obtenue.

DataSourceUitls publie Connection

Méthode releaseConnection

Implémentation interne

    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);
        }
    }
Copier après la connexion

L'implémentation spécifique de la méthode releaseConnection est gérée par doReleaseConnection. Si une exception est levée, elle sera uniquement déboguée dans le journal et ne sera pas levée en externe. Les deux paramètres de cette méthode sont NULL
Si con est NULL, cet appel est ignoré tandis que l'autre paramètre peut être NULL.

Méthode doReleaseConnection

Implémentation interne

    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);
    }
Copier après la connexion

La méthode doReleaseConnection est la méthode qui libère réellement la connexion. Par rapport à la méthode releaseConnection, elle termine le traitement des deux entrants. La somme de contrôle des paramètres lève une exception de niveau inférieur. Lorsque dataSource n'est pas NULL, libérez la connexion actuelle retenue par ce ConnectionHolder afin que la connexion actuelle puisse être réutilisée, ce qui est très utile pour améliorer les performances des opérations Jdbc. Si dataSource est null, choisissez de fermer la connexion directement.

DataSourceUitls ferme la connexion

Méthode doCloseConnection

Implémentation interne

    public static void doCloseConnection(Connection con, @Nullable DataSource dataSource) throws SQLException {
        if (!(dataSource instanceof SmartDataSource) || ((SmartDataSource) dataSource).shouldClose(con)) {
            con.close();
        }
    }
Copier après la connexion

Dans la méthode doReleaseConnection, nous avons appris que lorsque la source de données est NULL, elle exécutera la méthode doCloseConnection. En fait, ce n'est que lorsque le dataSource n'implémente pas l'interface org.springframework.jdbc.datasource.SmartDataSource ou lorsque le dataSource implémente l'interface org.springframework.jdbc.datasource.SmartDataSource et est autorisé à être fermé que la connexion est réellement fermée.

L'interface org.springframework.jdbc.datasource.SmartDataSource est une extension de l'interface javax.sql.DataSource et renvoie la connexion Jdbc sous une forme non enveloppée. Les classes qui implémentent cette interface peuvent demander si la connexion doit être fermée une fois l'opération terminée. Ces vérifications sont automatiquement effectuées dans Srping, DataSourceUitls et JdbcTemplate.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment désactiver les publicités recommandées par 360 Browser ? Comment désactiver les publicités recommandées par 360 Browser sur PC ? Comment désactiver les publicités recommandées par 360 Browser ? Comment désactiver les publicités recommandées par 360 Browser sur PC ? Mar 14, 2024 am 09:16 AM

Comment désactiver les publicités recommandées par 360 Browser ? Je pense que de nombreux utilisateurs utilisent 360 Browser, mais ce navigateur affiche parfois des publicités, ce qui rend de nombreux utilisateurs très angoissés. Laissez ce site présenter soigneusement aux utilisateurs comment désactiver les publicités recommandées par 360 Browser sur votre ordinateur. Comment désactiver les publicités recommandées par 360 Browser sur votre ordinateur ? Méthode 1 : 1. Ouvrez le navigateur 360 Safe. 2. Recherchez le logo « trois barres horizontales » dans le coin supérieur droit et cliquez sur [Paramètres]. 3. Recherchez [Lab] dans la barre des tâches sur le côté gauche de l'interface contextuelle et cochez [Activer la fonction « 360 Hotspot Information »]. Méthode 2 : 1. Double-cliquez d’abord

Comment fermer le paiement sans mot de passe dans Kuaishou Tutoriel Kuaishou sur la façon de fermer le paiement sans mot de passe Comment fermer le paiement sans mot de passe dans Kuaishou Tutoriel Kuaishou sur la façon de fermer le paiement sans mot de passe Mar 23, 2024 pm 09:21 PM

Kuaishou est un excellent lecteur vidéo. La fonction de paiement sans mot de passe de Kuaishou est très familière à tout le monde. Elle peut nous être d'une grande aide dans la vie quotidienne, en particulier lors de l'achat des produits dont nous avons besoin sur la plateforme. . Maintenant, nous devons l'annuler. Comment pouvons-nous l'annuler efficacement ? La méthode d'annulation du paiement sans mot de passe est très simple. Les méthodes d'opération spécifiques ont été triées. ensemble. Jetons un coup d’œil à l’intégralité du guide sur ce site, j’espère qu’il pourra aider tout le monde. Tutoriel sur la façon de fermer le paiement sans mot de passe dans Kuaishou 1. Ouvrez l'application Kuaishou et cliquez sur les trois lignes horizontales dans le coin supérieur gauche. 2. Cliquez sur Boutique Kuaishou. 3. Dans la barre d'options ci-dessus, recherchez le paiement sans mot de passe et cliquez dessus. 4. Cliquez pour soutenir

Comment désactiver Sina News Express ? Comment désactiver la fonction express ? Comment désactiver Sina News Express ? Comment désactiver la fonction express ? Mar 12, 2024 pm 09:46 PM

Le logiciel Sina News fournit de nombreuses informations sur les titres d'actualité, qui sont essentiellement diffusées par la plate-forme officielle. Le contenu de chaque article d'actualité est authentique. Vous pouvez faire glisser votre doigt de haut en bas pour rechercher et parcourir en un seul clic, ce qui rend l'atmosphère de lecture globale plus confortable. . Entrez votre numéro de téléphone portable pour vous connecter en ligne. Les chaînes d'information dans différents champs sont ouvertes. Les mises à jour 24 heures sur 24 ne manquent pas. Les actualités nationales, étrangères et locales ne manquent pas. navigation. Le contenu des actualités est tout Si vous êtes intéressé, vous pouvez également désactiver la fonction News Express, afin qu'elle ne soit pas affectée. Vous pouvez l'ouvrir à tout moment et prévisualiser les gros titres d'actualités populaires. détails aux utilisateurs de Sina News en ligne. Étapes de fonctionnement de la fonction de livraison express. Recherchez Sina News et cliquez sur le coin inférieur droit

Explication détaillée sur la façon de désactiver le Centre de sécurité Windows 11 Explication détaillée sur la façon de désactiver le Centre de sécurité Windows 11 Mar 27, 2024 pm 03:27 PM

Dans le système d'exploitation Windows 11, le Centre de sécurité est une fonction importante qui aide les utilisateurs à surveiller l'état de sécurité du système, à se défendre contre les logiciels malveillants et à protéger la vie privée. Cependant, les utilisateurs peuvent parfois avoir besoin de désactiver temporairement Security Center, par exemple lors de l'installation de certains logiciels ou lors du réglage du système. Cet article présentera en détail comment désactiver le Centre de sécurité Windows 11 pour vous aider à utiliser le système correctement et en toute sécurité. 1. Comment désactiver le Centre de sécurité Windows 11 Sous Windows 11, la désactivation du Centre de sécurité ne

Explication détaillée sur la façon de désactiver la protection en temps réel dans le Centre de sécurité Windows Explication détaillée sur la façon de désactiver la protection en temps réel dans le Centre de sécurité Windows Mar 27, 2024 pm 02:30 PM

En tant que l'un des systèmes d'exploitation comptant le plus grand nombre d'utilisateurs au monde, le système d'exploitation Windows a toujours été privilégié par les utilisateurs. Cependant, lorsqu'ils utilisent des systèmes Windows, les utilisateurs peuvent être confrontés à de nombreux risques de sécurité, tels que des attaques de virus, des logiciels malveillants et d'autres menaces. Afin de renforcer la sécurité du système, les systèmes Windows disposent de nombreux mécanismes de protection de sécurité intégrés, dont la fonction de protection en temps réel du Centre de sécurité Windows. Aujourd'hui, nous présenterons en détail comment désactiver la protection en temps réel dans le Centre de sécurité Windows. Tout d'abord, commençons

Comment désactiver le Centre de sécurité dans Windows 11 Comment désactiver le Centre de sécurité dans Windows 11 Mar 28, 2024 am 10:21 AM

Windows 11 est la dernière version du système d'exploitation lancée par Microsoft. Par rapport aux versions précédentes, Windows 11 dispose d'une gestion et d'une surveillance plus strictes de la sécurité du système. L'une des fonctions importantes est le centre de sécurité. Security Center peut aider les utilisateurs à gérer et à surveiller l'état de sécurité du système pour garantir que le système est protégé contre les logiciels malveillants et autres menaces de sécurité. Bien que Security Center soit important pour protéger la sécurité du système, les utilisateurs peuvent parfois souhaiter désactiver Security Center pour des besoins personnels ou pour d'autres raisons. Cet article expliquera comment utiliser W

Où désactiver Dolby Atmos dans opporeno5_Comment désactiver Dolby Atmos dans opporeno5 Où désactiver Dolby Atmos dans opporeno5_Comment désactiver Dolby Atmos dans opporeno5 Mar 25, 2024 pm 04:41 PM

1. Cliquez sur Son et vibration dans les paramètres du téléphone. 2. Cliquez sur Dolby Atmos. 3. Éteignez l'interrupteur derrière Dolby Atmos.

Comment désactiver la fonction d'utilisation maintenant, payer plus tard sur Pinduoduo Comment désactiver la fonction d'utilisation maintenant, payer plus tard sur Pinduoduo Comment désactiver la fonction d'utilisation maintenant, payer plus tard sur Pinduoduo Comment désactiver la fonction d'utilisation maintenant, payer plus tard sur Pinduoduo Mar 12, 2024 pm 04:07 PM

Comment désactiver la fonction Utiliser maintenant, payer plus tard sur Pinduoduo ? Pinduoduo est un logiciel très intelligent qui permet aux utilisateurs d'acheter des choses en ligne et de les faire livrer à leur porte. Il existe de nombreux types de produits sur ce logiciel. Les utilisateurs peuvent choisir les produits qu'ils doivent acheter afin de le rendre plus pratique. pour que les utilisateurs puissent utiliser ce logiciel, une fonction utiliser maintenant-payer plus tard a été lancée. De nombreux utilisateurs souhaitent annuler cette fonction. L'éditeur suivant a compilé des méthodes pour annuler la fonction utiliser maintenant-payer plus tard pour votre référence. Comment désactiver la fonction d'utilisation maintenant, payer plus tard sur Pinduoduo. Désactivez-la sur Pinduoduo 1. Après avoir accédé à la page d'accueil personnelle de Pinduoduo, cliquez sur « Paramètres ». 2. Dans les paramètres, cliquez sur « Utiliser maintenant, payer plus tard ». 3.

See all articles