Básicamente he (ignorando el manejo de excepciones, etc.):¿Puedo cerrar declaraciones en una transacción antes de comprometerla en Derby (JDBC)?
connection.setAutoCommit(false);
Statement statement1 = connection.createStatement();
statement1.executeUpdate("...");
statement1.close();
Statement statement2 = connection.createStatement();
statement2.executeUpdate("...");
statement2.close();
connection.commit();
si he entendido bien, no debería tener ningún impacto debido a todo lo que realmente hace es liberar los recursos para la GC. Especially with Derby: debe cerrar explícitamente Declaraciones, ResultSets y Conexiones cuando ya no los necesite. Las conexiones a Derby son recursos externos a una aplicación, y el recolector de basura no las cerrará automáticamente.
¿Sin embargo, causará problemas con la transacción? No creo que la transacción se base en la Declaración. ¿Alguien puede confirmar esto?
Parece que, si cierra una instrucción, la _transacción_ aún está abierta en el lado de la base de datos (esperando confirmación o reversión). Solo se finaliza/cierra cuando se emite un comando commit o rollback a la conexión. ¿Estoy en lo cierto? – ADTC