Автоматическое управление ресурсами Java 7 JDBC (инструкция try-with-resources)

Как интегрировать обычную идиому JDBC создания / получения соединения, запроса к базе данных и, возможно, обработки результатов с помощью автоматического управления ресурсами Java 7, оператора try-with-resources? ( Учебник )

До Java 7 обычный шаблон был примерно таким:

Connection con = null;
PreparedStatement prep = null;

try{
    con = getConnection();
    prep = prep.prepareStatement("Update ...");
    ...
    con.commit();
}
catch (SQLException e){
    con.rollback(); 
    throw e;
}
finally{
    if (prep != null)
        prep.close();
    if (con != null)
        con.close();
}

В Java 7 вы можете выполнить следующее:

try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){

   ...
   con.commit();
}

Это закроет Соединение и PreparedStatement , а как насчет отката? Я не могу добавить предложение catch, содержащее откат, потому что соединение доступно только в блоке try.

Вы все еще определяете соединение вне блока try? Что здесь лучше всего, особенно если используется пул соединений?

37
задан Basil Bourque 31 July 2015 в 00:18
поделиться