Red social para profesionales IT

Ingresar

  • Blogs
  • Base de datos
  • Liberar o cerrar los recursos utilizados por JDBC para no colapsar el motor de Base de Datos

Liberar o cerrar los recursos utilizados por JDBC para no colapsar el motor de Base de Datos


Como los drivers de JDBC no liberan los recursos asociados a la base de datos en forma automática, es necesario que los programadores los liberen en forma programática. Es muy común que se liberen estos recursos en un hilo de ejecución normal, y eso generalmente se hace, pero lamentablemente cuando ocurre alguna excepción, también es necesario liberarlos y es por eso que te dejamos el siguiente consejo.

Siempre liberar los recursos en la cláusula finally de un try-catch (en java)

 
  1. Antes del try-catch, se declaran las variables de PreparedStatement y ResultSet y se pone null como valor.
  2. Dentro de la sentencia try, se prepara y ejecuta el statement, y se obtiene el result set.
  3. En la cláusula catch, se manejan las excepciones, debiendo hacer un rollback cuando sea necesario.
  4. En la cláusula finally, se deben liberar los recursos.
 
Te dejamos un ejemplo en lenguaje Java:
 
PreparedStatement stmt = null;
ResultSet rs = null;


try 
{
     stmt = connection.preparedStatement(...);    // Puede tirar SQLException
     ...
     rs = stmt.executeQuery();   // Puede tirar SQLException
     ...
     while( rs.next() )
     {
          rs.getX(1);  // X debe ser reemplazado con un tipo de dato como String, Int, etc... (Puede tirar SQLException)
     }
}
catch( SQLException ) 
{
     // Error al nivel de la base de datos (ie. SQL mal formado, la base de datos no está conectado, etc...)
     // En el caso de un INSERT, UPDATE o DELETE, puede ser necesario hacer un rollback aquí
}
finally 
{
     // Si executeQuery() ejecuta correctamente, se tiene que liberar el recurso aquí
     if( rs != null ) { rs.close(); }   

     // Si prepareStatement(String) ejecuta correctamente, se tiene que liberar el recurso aquí
     if( stmt != null ) { stmt.close(): }
}

Es muy importante tener en cuenta esto para no dejar ocupados los recursos de la base de datos, ya que estos no son ilimitados y va a llegar un momento en que van a colapsar.