Mysql
 sql >> Database >  >> RDS >> Mysql

Una connessione al database dovrebbe rimanere sempre aperta o essere aperta solo quando necessario?

La connessione al database deve essere aperta solo quando necessario e chiusa dopo aver eseguito tutto il lavoro necessario con essa. Esempio di codice:

  • Prima di 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
    

Ma poiché l'apertura manuale di una connessione al database è troppo costosa, si consiglia vivamente di utilizzare un pool di connessione al database , rappresentato in Java con DataSource interfaccia. Questo gestirà le connessioni fisiche al database per te e quando chiudi it (ovvero chiamando Connection#close ), la connessione fisica al database sarà solo in modalità SLEEP e sarà ancora aperta.

Domande/risposte correlate:

Alcuni strumenti per gestire il pool di connessioni al database: