Когда открывать и когда закрывать соединение с mysql при использовании Java-сервлетов?

#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 напрямую.