#java #servlets #jdbc
#java #сервлеты #jdbc
Вопрос:
Можно ли открывать соединение в init
методе и закрывать его в destroy
методе? Также, каков наилучший способ открыть соединение с базой данных mysql. В настоящее время я использую это:
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://" ipaddress "?user=" user "amp;password=" pass);
Но я где-то читал, что это неэффективно, и я должен использовать пул соединений. Как это сделать?
Ответ №1:
Я бы настоятельно рекомендовал использовать пул соединений, либо явно (например, c3p0), либо тот, который предоставляется вашим контейнером сервлетов.
Откройте подключение к базе данных, когда вам это нужно, а затем закройте его, как только сможете — пул соединений позаботится о реальном сетевом соединении.
Если вы этого не сделаете, у вас будет одно соединение для всего вашего приложения, что означает, что вы можете обрабатывать только один запрос за раз, и весь ваш код должен синхронизироваться с запросами к базе данных. Конечно, вы хотите, чтобы несколько полностью независимых запросов могли выполняться одновременно? Вы не можете сделать это с помощью одного соединения.
Что касается наилучшего способа открытия соединения, настроив соответствующий пул соединений — вы все равно можете использовать DriverManager.getConnection()
, но указать пул соединений вместо mysql напрямую.