Передача объекта соединения JDBC методу в качестве параметра - PullRequest
1 голос
/ 24 октября 2019

Рассмотрим следующий код:

try (Connection conn = icrud.getConnection();
    PreparedStatement ps = conn.prepareStatement("SELECT ID FROM TABLE_NAME");
    ResultSet rs = ps.executeQuery();)
{
    conn.setAutoCommit(false);
    while (rs.next()) 
    {
        perform_something_method(conn, rs.getLong("ID"));
    }
    perform_something_method2(conn)
    conn.commit();
}
catch(Exception e)
{
    conn.rollback();
}

private void perform_something_method(Connection conn, long id) throws Exception
{
    try (PreparedStatement ps = conn.prepareStatement("UPDATE TABLE1 SET LOGDATETIME=? WHERE ID=?");)
    {
        //perform some task
    }
    catch(Exception e)
    {
        throw e;
    }
}    

private void perform_something_method2(Connection conn) throws Exception
{
    try (PreparedStatement ps = conn.prepareStatement("UPDATE TABLE1 SET LOGDATETIME=? WHERE ID=?");)
    {
        //perform some task
    }
    catch(Exception e)
    {
        throw e;
    }
}

Как вы можете видеть, я создал Connection объект и выполнил запрос, используя PreparedStatement. В цикле While я вызываю другой метод execute_something_method () для выполнения какого-либо процесса в наборе полученных результатов. Я передаю объект Connection этому методу. Это безопасно?

В методе perform_something_method() Я не закрываю, не фиксирую, не откатываю переданный объект Connection, скорее, я выкидываю, если в нем возникает какое-либо исключениеэтот метод, чтобы он возвращался и выполнял откат.

Так что этот код является правильным / безопасным, так как я передаю объект соединения JDBC в качестве параметра метода. Дайте мне знать, если это может привести к потенциальному риску.

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