Как мне смоделировать мою систему - следствие базы данных
У меня есть основной класс, класс входа в систему и класс графического интерфейса.
В моем основном я создаю соединение с базой данных, используя шаблон 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();
Верхний код означает получение соединения из пула, если все соединения уже распределены, механизм автоматически создает новое.
Самые популярные библиотеки: