forname ejemplo drivermanager conexion conectar con clase cerrar java jvm database-connection

java - ejemplo - ¿Las conexiones sql se cerrarán automáticamente si cerramos la JVM?



jdbc driver (2)

Creo que esto depende de la base de datos y del controlador jdbc que esté utilizando. Supongo que en la mayoría de los casos las conexiones se agotarán y se cerrarán, pero no sucederá de inmediato. Por lo tanto, la mejor manera es cerrar la conexión de forma explícita. Estas son las técnicas usuales:

  1. hazlo en el bloque finally que envuelve la sesión de conexión db.
  2. Solo en caso de escribir el método finalize () y cerrar la conexión allí. Ayudará a cerrar la conexión cuando algo vaya mal y el objeto que se conectó a DB será recolectado como basura antes de que se cierre la conexión.
  3. Puede crear un cierre de cierre invocado automáticamente por JVM cuando el proceso está descendiendo. Esto ayuda en la mayoría de los casos cuando estás matando JVM desde afuera (excepto kill -9 en Unix)

Por cierto, creo que en su caso no necesita muchas conexiones con DB. Intenta reutilizar uno de tus 100 hilos.

Creé un programa de prueba que crea 20 hilos y luego estos hilos abrirán muchas conexiones sql. Digamos que está ejecutando este programa desde eclipse y ahora si cerrará eclipse. ¿Esto cerrará todas las conexiones sql abiertas? Si no, ¿qué pasará con estos? ¿Mostrará 100 conexiones abiertas en el lado de la base de datos? Si es así, ¿qué hacer en este caso?


Las conexiones no se cerrarán como al llamar a java.sql.Connection.close() . Básicamente, la JVM que abrió la conexión no puede mantener vivas las conexiones TCP / IP a la base de datos. Estos se cerrarán de inmediato. Por lo tanto, la "conexión" se cerrará también. Sin embargo, la base de datos puede no reaccionar de inmediato y mantener sus sesiones activas por un tiempo.

En Oracle, puede eliminar las sesiones en la base de datos directamente, si tiene suficientes privilegios.

Supongo que el comportamiento es específico del proveedor y / o específico de la configuración. No hay una respuesta general.