Вам нужно будет вложить try-with-resources.Например:
try (Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement("select * from foo where bar = ?");
statement.setString(1, "baz);
try (ResultSet result = statement.executeQuery()) {
// etc
}
}
Хорошо работающие драйверы JDBC автоматически закрывают операторы, когда закрывается соединение, и результирующие наборы, когда оператор закрывается, но лучше всегда программировать защиту и обеспечивать правильное закрытие ресурсов.
Try-with-resources не относится к JDBC.Что в основном делает попытка с ресурсами, так это прикрепление к блоку finally
, который закрывает ресурсы в правильном порядке, вызывая их методы close()
.В результате, try-with-resources не имеет значения, откуда берется ресурс, если он реализует AutoCloseable
.Это просто гарантирует, что close()
вызывается для ресурса в конце блока.Поэтому все равно, если "connection.createStatement произойдет" внешне "" .Метод createStatement
- это просто еще один метод, который возвращает ресурс, а try-with-resources касается только возвращаемого объекта.