Bien, me he dado cuenta de que realmente he formulado demasiadas preguntas sin haber contribuido a la comunidad, pero quiero su opinión al respecto. Decir si tengoEjecutando dos Java PreparedStatements con una opción de estilo de conexión
private void closeAll(ResultSet rs, PreparedStatement ps, Connection con) {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
}
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
y que quería hacer varias operaciones en mi base de datos MySQL utilizando una sola conexión. ¿Es mejor escribir
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, null);
}
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
o
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
rs.close();
ps.close();
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
considero mejor a significar tanto más seguro, más clara, más concisa, o más robusto. No estoy seguro de si este último siempre cerrará las declaraciones preparadas y los conjuntos de resultados abiertos siempre que encuentre una excepción, aunque creo que sí se ve más conciso. Pero el primero se ve mejor, ya que es más consistente, pero agrega más sobrecarga, ya que usa más bloques try finally.
Me doy cuenta de que la parte de administración de recursos automática de Java 7 de Project Coin me obligará a inclinarme por la anterior ya que los recursos utilizados en el encabezado son implícitamente finales en el cuerpo. Sin embargo, tengo bastante tiempo antes de tener que preocuparme de revisar mi código para adaptarlo a ARM y ser capaz de eliminar el código repetitivo, por lo que la pregunta sigue en pie: de los dos estilos anteriores, ¿cuál sería una mejor práctica? Si ambos hacen los comportamientos esperados, ¿estos últimos me darán un aumento notable en el rendimiento que justificaría el estilo "más feo"?
tu respuesta no es pertinente para la pregunta – MozenRath