Я использую пул соединений в своем приложении. Мой вопрос:
Требуется ли явно закрывать оператор перед закрытием соединения в случае среды пула соединений?
При подключении к соединенной среде соединение не закрывается (но возвращается обратно в пул свободных соединений).
Я проверил функциональные характеристики JDBC 4.0. В пункте 9.4.4 четко указано, что:
Закрытие объектов соединения. Приложение вызывает метод Connection.close, чтобы указать, что оно завершило использование соединения. Все объекты Statement, созданные из данного объекта Connection, будут закрыты при вызове метода close для объекта. Когда соединение закрыто, любая попытка доступа к любому из его методов, за исключением методов close, isClosed или isValid, приведет к возникновению исключения SQLException.
Таким образом, спецификации jdbc требуют закрытия всех операторов во время закрытия соединения. Так применимо ли это только к среде без пула соединений или же это относится и к среде пула соединений?
По моему мнению, это не должно иметь значения в случае пула, потому что мы кодируем интерфейс (java.sql.Connection
& java.sql.Statement
). Таким образом, мы не беспокоимся о реализации, и у родительского класса (java.sql.Connection
) нет никакой информации о дочернем / классе имплементации (классе реализации поставщика).