Pues mira lo que tendrias que hacer primero es que los datos para la coneccion a la base de datos la tengas en un archivo properties o uses un datasource, para el properties usa un ResourceBundle, ahora con respecto a los datasources, seria dependediendo de que servidor de aplicaciones uses.
Segundo eso de estar abriendo y cerrando conexiones no es muy recomendable, lo que deberias hacer es tener un pool de conexiones. Y usar una conexion de este pool cada vez que quieras realziar una consulta a la BD.
Tercero utiliza mejor los PreparedStatement en lugar de los Statement, y cuando vayas a realizar alguna transaccion usa el setAutoCommit(), mas o menos de esta manera
Código:
try{
con.setAutoCommit(false);
//aqui realizas tu transaccion
con.commit();
con.setAutoCommit(true);
}
catch(SQLException e){
con.rollback();
con.setAutoCommit(false);
}
Eso seria mas o menos lo básico, ya que si usas algun framework, este te facilita esto.