Fermeture des connexions JDBC dans le pool
Question : Les connexions JDBC doivent-elles être fermées lors de l'utilisation d'un pool de connexions ? Si tel est le cas, cela ne va-t-il pas à l'encontre de l'objectif du pooling ?
Réponse : Oui, les connexions poolées doivent être fermées. La fermeture d'une connexion groupée libère la connexion sous-jacente vers le pool.
Le pool de connexions garde une trace des connexions utilisées et de celles qui sont libres. Lorsqu'une connexion est fermée, le pool la reconnaît comme disponible pour réutilisation.
Question : La méthode suivante est-elle adaptée pour obtenir une connexion depuis le pool ou le DriverManager ?
public Connection getConnection(boolean pooledConnection) throws SQLException { if (pooledConnection) { if (ds == null) { try { ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/NamedInTomcat"); return ds.getConnection(); } catch (NamingException e) { e.printStackTrace(); } } return (ds == null) ? getConnection(false) : ds.getConnection(); } return DriverManager.getConnection("jdbc:mysql://..." + dbName, uName, pWord); }
Réponse : Le code n'est pas recommandé. Le DataSource doit être initialisé une fois lors du démarrage de l’application plutôt que dans la méthode. De plus, la synchronisation et les vérifications nulles sont inutiles. La méthode doit simplement rechercher la source de données une fois et en renvoyer les connexions de manière cohérente.
Considérations supplémentaires :
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!