Закройте соединение (и оператор и набор результатов!) В том же блоке метода , в котором вы его получили, в блоке finally
блока try
, где они открыты.
Общая идиома:
public void doSomething() throws SQLException {
Connection connection = null;
try {
connection = database.getConnection();
} finally {
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
}
Закрытие соединения, оператора и набора результатов должно происходить в обратном порядке по мере их открытия.
Если реальная проблема связана с производительностью, рассмотрите возможность использования пула соединений для повышения производительности соединения, например C3P0 . Это, кстати, не меняет общую идиому. Просто продолжайте писать ту же идиому, реализация пула подключений будет волновать себя еще больше.
Также см. эту статью для получения дополнительной практики / примеров.