2
respuestas

Duda de cierre de conexión en la última refactorización del Código

hola, ¿alguien me puede ayudara entender esto? estoy en el video donde la refactorización del profesor, la creación de la conexión se encuentra en el constructor de ProductoController, por ende en ProductoDAO ya no es necesario hacer una nueva conexión por cada método, pero, se supone que se usa try with resouce para cerrar la conexión, el cual ya no lo usa en los métodos ni tampoco la cierra en ningún momento de manera explícita. entonces ¿Dónde se cierra la conexión?

2 respuestas

Hola Ernesto,

Gracias traer esa discursión, s una pregunta muy válida. Es importante recordar que en un programa Java, todas las conexiones a la base de datos deben cerrarse explícitamente para liberar los recursos del sistema. Sin embargo, en el código refactorizado que mencionas, parece que el profesor no cierra la conexión explícitamente.

El programa está diseñado para mantener la conexión abierta mientras se ejecuta, y luego se cierra automáticamente cuando el programa termina. Esto se puede hacer en un entorno de desarrollo para simplificar el código, pero no es una buena práctica en un entorno de producción, donde es importante liberar los recursos del sistema tan pronto como sea posible.

En un entorno de producción, normalmente cerrarías la conexión en un bloque finally después de tu bloque try/catch, o usarías un bloque try-with-resources, que cierra automáticamente la conexión, como mencionaste.

Aquí tienes un ejemplo de cómo podrías hacerlo:

try (Connection conn = DriverManager.getConnection(miUrl, miUsuario, miContraseña)) {
    // usa la conexión aquí
} catch (SQLException e) {
    // maneja cualquier error aquí
}

En este ejemplo, la conexión se cierra automáticamente cuando el bloque try se completa, incluso si se lanza una excepción.

Espero que esto aclare tu duda. Mucho éxito en todo lo que te propongas y si aún sigues confundido aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.

Talvez esto te ayude, te recomiendo revisarlo en este enlace → https://app.aluracursos.com/forum/topico-duda-error-you-can-t-operate-on-a-closed-connection-220456