Эффективность Java JDBC: как долго должно поддерживаться соединение?

Я все еще работаю над тем же упоминанием проблемыВот, Кажется, он работает нормально, особенно после создания класса AbstractModel, показанного ниже:

public abstract class AbstractModel {

    protected static Connection myConnection = SingletonConnection.instance().establishConnection();
    protected static Statement stmt;
    protected static ResultSet rs;

    protected boolean loginCheck;                   // if userId and userLoginHistoryId are valid - true, else false
    protected boolean userLoggedIn;                 // if user is already logged in - true, else false

    public AbstractModel (int userId, Long userLoginHistoryId){
        createConnection();                                 // establish connection
            loginCheck = false;
        userLoggedIn = false;
        if (userId == 0 && userLoginHistoryId == 0){        // special case for login
            loginCheck = true;                              // 0, 0, false, false
            userLoggedIn = false;                           // set loginCheck to true, userLogged in to false
        } else {
            userLoggedIn = true;
            try{
                String query = "select \"user_login_session_check\"(" + userId + ", " + userLoginHistoryId + ");";
                System.out.println("query: " + query);
                stmt = myConnection.createStatement();
                rs = stmt.executeQuery(query);
                while (rs.next()){
                    loginCheck = rs.getBoolean(1);
                }
            } catch (SQLException e){
                System.out.println("SQL Exception: ");
                e.printStackTrace();
            }
        }

    }
    // close connection
    public void closeConnection(){
        try{
            myConnection.close();
        } catch (SQLException e){
            System.out.println("SQL Exception: ");
            e.printStackTrace();
        }

    }
    // establish connection
    public void createConnection(){
        myConnection = SingletonConnection.instance().establishConnection();
    }

    // login session check
    public boolean expiredLoginCheck (){
        if (loginCheck == false && userLoggedIn == true){
            closeConnection();
            return false;
        } else {
            return true;
        }
    }

}

Я уже разместил хранимые процедуры и реализацию шаблона Singleton в ссылке на предыдущий вопрос выше.

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

Правильно ли продлить соединение хотя бы на 3-4 транзакции данных? Например. Проверка правильности вводимых пользователем данных для какой-либо формы или чего-то похожего на автоматическое предложение google ... Это все отдельные вызовы хранимых функций, основанные на пользовательском вводе. Могу ли я использовать один экземпляр подключения вместо подключения и отключения после каждой транзакции данных? Что является более эффективным?

Если мои предположения верны (более эффективно использовать один экземпляр соединения), то открытие и закрытие соединения должны обрабатываться в контроллере, поэтому я создал методы createConnection () и closeConnection ().

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос