Как реализовать подключение jdbc в одном классе для всех
Добрый день.Имеется код:
private String instanceName = "Адрес сервера";
private String databaseName = "БД";
private String userName = "Логин";
private String pass = "Пароль";
private String connectionUrl = "jdbc:sqlserver://%1$s;databaseName=%2$s;user=%3$s;password=%4$s;";
private String connectionString = String.format(connectionUrl, instanceName, databaseName, userName, pass);
Connection con;
{
try {
con = DriverManager.getConnection(connectionString);
} catch (SQLException e) {
e.printStackTrace();
}
}
Как можно использовать подключение только в одном классе , а в других наследовать его. Что бы не копипастить. Что бы у каждого класса было своё подключение и при закрытии соединения в одном классе, не закрывалось в других.
Ответы (1 шт):
DAO-класс это класс который позволяет вам работать с какой-то таблицей. Например UsersDao - позволяет работать с таблицей users (читать/записывать данные из/в таблицу)
Вариант 1 - создавать коннекшен в каждом DAO-классе (предварительно создав класс ConnectionCreator в котором будет метод createConnect с вашим кодом)
Есть ряд минусов:
1 - придется ручками закрывать коннекшен после каждого обращения, а если где-то забудете, то коннекшены начнут копиться и ничего хорошего не произойдет
2 - операция открытия коннекшена относительно дорогая и если вам важен перформанс, то каждый раз создавать его - накладно
Вариант 2 - тут помудренее но и пожалуй правильнее. Ваши DAO-классы не должны пользоваться объектом Connection, а должны создавать sql-запрос и передавать его и некоторый класс/метод-конвертер в другой класс отвечающий за обработку этого sql-запроса, назовем его допустим SqlExecutor.
Внутри класса SqlExecutor будет создавать Connection, на нем выполняться полученный sql-запрос, происходить конвертация ResultSet'а в какой-то объект и закрываться Connection.