Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une connexion à une base de données doit-elle rester ouverte en permanence ou n'être ouverte qu'en cas de besoin ?

La connexion à la base de données doit être ouverte uniquement lorsque cela est nécessaire et fermée après avoir effectué tout le travail nécessaire avec elle. Exemple de code :

  • Avant Java 7 :

      Connection con = null;
      try {
          con = ... //retrieve the database connection
          //do your work...
      } catch (SQLException e) {
          //handle the exception
      } finally {
          try {
              if (con != null) {
                  con.close();
              }
          } catch (SQLException shouldNotHandleMe) {
              //...
          }
      }
    
  • Java 7 :

      try (Connection con = ...) {
      } catch (SQLException e) {
      }
      //no need to call Connection#close since now Connection interface extends Autocloseable
    

Mais comme l'ouverture manuelle d'une connexion à une base de données est trop coûteuse, il est fortement recommandé d'utiliser un pool de connexion à la base de données , représenté en Java par DataSource interface. Cela gérera les connexions physiques à la base de données pour vous et lorsque vous fermerez (c'est-à-dire en appelant Connection#close ), la connexion physique à la base de données sera simplement en mode VEILLE et sera toujours ouverte.

Questions/réponses associées :

Quelques outils pour gérer le regroupement des connexions à la base de données :