Introduction et méthodes de DataSourceUitls
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()); } }
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; }
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); } }
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); }
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(); } }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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

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

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

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

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 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.
