закрывает ли java.sql.Connection
также закройте все утверждения,
подготовленные заявления и т. д. получены
из этой связи? Или есть
будет утечка памяти, если я закрою
связь, но оставить заявления,
и т.д. не закрыты?
Вы должны не зависеть от этого.
Спецификация гласит следующее:
Приложение вызывает метод
Statement.close, чтобы указать, что это
завершил обработку заявления.
Все объекты выписки будут закрыты
когда соединение, которое их создало
закрыто. Тем не менее, это хорошее кодирование
практика для приложений, чтобы закрыть
заявления, как только они
закончил их обработку. Это позволяет
любые внешние ресурсы, которые
заявление используется, чтобы быть выпущенным
немедленно.
Рекомендуется закрывать ВСЕ ResultSets, Statement и Connections в блоке finally, каждый из которых заключен в свой собственный try / catch, в обратном порядке получения.
Напишите такой класс:
public class DatabaseUtils
{
public static void close(Statement s)
{
try
{
if (s != null)
{
s.close();
}
}
catch (SQLException e)
{
// log or report in someway
e.printStackTrace();
}
}
// similar for ResultSet and Connection
}
Звоните так:
Statement s;
try
{
// JDBC stuff here
}
finally
{
DatabaseUtils.close(s);
}