Закрытие соединения с БД с помощью команды try-with-resources java - PullRequest
0 голосов
/ 17 июня 2020

У меня есть примитивный метод получения для моей базы данных. Мне нужно получить курс по его идентификатору, а затем закрыть соединение и инструкцию.

public Course get(int id) throws ClassNotFoundException, SQLException {
        try (Connection connection = ConnectionConfig.getDbConnection();
             PreparedStatement statement = connection.prepareStatement(GET_COURSE)){
            statement.setInt(1, id);
            ResultSet course = statement.executeQuery();
            course.next();
            String result = course.getString(1);
            return new Course(id, result);
        }
    }

Я хочу сделать это с помощью try-with-resources. Будет ли это работать в этом коде или автоматическое закрытие не сработает из-за оператора return в блоке? С другой стороны, я не хочу использовать return за пределами этого блока, потому что метод может возвращать объект с нулевым полем. Какая форма метода наиболее эффективна и удобочитаема в данной ситуации? Заранее спасибо, я так понимаю это довольно дилетантский sh вопрос)

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Соединение будет закрыто блоком попыток с ресурсами. Условием для этого является то, что данный класс реализует AutoCloseable. И это уже так.

Как видно здесь

0 голосов
/ 17 июня 2020

Код закрытия соединений обычно записывается в блоке finally

Connection connection = null;
try {
connection = ConnectionConfig.getDbConnection();
//do all the stuff

}
finally{
connection.close()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...