Когда открывать и когда закрывать соединение mysql при использовании сервлетов Java? - PullRequest
2 голосов
/ 05 октября 2011

Можно ли открыть соединение в методе init и закрыть его в методе destroy? Также, каков наилучший способ открыть соединение с базой данных MySQL. В настоящее время я использую это:

Class.forName("com.mysql.jdbc.Driver");

Connection connect = DriverManager.getConnection("jdbc:mysql://" + ipaddress + "?user=" + user + "&password=" + pass);

Но я где-то читал, что это неэффективно, и я должен использовать пул соединений. Как это сделать?

1 Ответ

6 голосов
/ 05 октября 2011

Я бы настоятельно рекомендовал использовать пул соединений, явно (например, c3p0 ) или предоставленный вашим контейнером сервлета.

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

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

Что касается лучшего способа открытия соединения, настроив соответствующий пул соединений - вы все равно можете использовать DriverManager.getConnection(), но вместо этого указав пул соединенийMySQL напрямую.

...