Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Soll eine Datenbankverbindung immer geöffnet bleiben oder nur bei Bedarf geöffnet werden?

Die Datenbankverbindung muss nur bei Bedarf geöffnet und geschlossen werden, nachdem alle erforderlichen Aufgaben damit erledigt wurden. Codebeispiel:

  • Vor 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
    

Da das manuelle Öffnen einer Datenbankverbindung jedoch zu teuer ist, wird dringend empfohlen, einen Datenbankverbindungspool , dargestellt in Java mit DataSource Schnittstelle. Dies übernimmt die physischen Datenbankverbindungen für Sie und beim Schließen es (d.h. Aufruf von Connection#close ), befindet sich die physische Datenbankverbindung nur im SLEEP-Modus und ist weiterhin geöffnet.

Zugehörige Fragen/Antworten:

Einige Tools zum Umgang mit dem Pooling von Datenbankverbindungen: