Как мне смоделировать мою систему - следствие базы данных

У меня есть основной класс, класс входа в систему и класс графического интерфейса.

В моем основном я создаю соединение с базой данных, используя шаблон Singleton - только один экземпляр этого соединения.

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

Мой метод подключения в основном:

/**
 * Use the Singleton pattern to create one Connection
 */
private static Connection getConnection() {
    if (conn != null) {
        return conn;
    }
    try {
        Class.forName(driver);
    } catch (ClassNotFoundException e) {
        System.out.println(e.getMessage() + " load driver error");
        System.exit(0);
    }
    try {
        //conn = DriverManager.getConnection(host);
        conn = DriverManager.getConnection(host + "create=true", dbUsername, dbPassword);
    } catch (SQLException e) {
        displayErr("Get connection error: ", e);
        System.exit(0);
    }
    return conn;
}

Теперь я хочу создать метод входа в систему, где мне нужно использовать соединение Conn. Метод статический, и я не могу использовать conn.

Я уверен, что это неправильно, но я также попытался создать открытый метод, который возвращает соединение conn, а затем попытался вызвать этот метод из Main.

conn = Main.returnConnection();

Что мне делать в этой ситуации? Довольно смущен тем, как я должен моделировать это.

2 ответа

Решение

Я выяснил, что цель шаблона Singleton - создать один экземпляр чего-либо и позволить его видеть всем.

Поэтому вместо этого я опубликовал static static void и теперь могу получить доступ к соединению, не создавая каждый раз новое.

Поправьте меня, если я ошибаюсь, но это прекрасно работает.

Ваш подход настолько примитивен, если сравнивать с пулами соединений. Пул соединений означает пул, который включает в себя кэшированные, повторно используемые соединения, которые могут быть использованы в будущих запросах. Как вы сказали, открытие соединения для каждого пользователя является дорогостоящим процессом, а также предоставление статического соединения для каждого пользователя, возникают конфликты. Пул соединений - это стандарт, который следует использовать в подобных ситуациях.

connection = connectionPool.getConnection();

Верхний код означает получение соединения из пула, если все соединения уже распределены, механизм автоматически создает новое.

Самые популярные библиотеки:

Другие вопросы по тегам