Совместное использование подготовленных операторов и пула соединений в MySQL - PullRequest
3 голосов
/ 02 мая 2009

В настоящее время для каждого запроса создается и используется повторно подготовленный оператор. Я не использую пул соединений. C3P0 - широко рекомендуемая библиотека для того же самого.

Но, поскольку PreparedStatement привязан к соединению. В среде пула соединения возвращаются в пул, что делает PreparedStatement непригодным для использования. Я прав насчет этого вывода? Есть ли способ использовать подготовленное заявление и пул соединений вместе?

Обновление: это отдельное приложение. Поэтому я не могу использовать фреймворк только для правильного создания пула соединений.

Ответы [ 3 ]

1 голос
/ 02 мая 2009

Это зависит от используемого вами механизма объединения. Большинство серверов приложений Java EE имеют реализации пула соединений, в которых имеется подготовленный кэш операторов вместе с каждым соединением в пуле. Таким образом, подготовленные заявления используются повторно, а также связи. Я не знаю ни о каких автономных механизмах объединения, которые имеют эту функцию.

0 голосов
/ 02 мая 2009

Когда я увидел этот материал из "Высокопроизводительного MySQL", это заставило меня подумать, что вам нужно было сделать что-то с вашей конфигурацией MySQL сверх того, что вы установили в Java. Вы редактировали свой файл my.cnf?

Кроме того, вы смотрели другие SO вопросы по теме?

РЕДАКТИРОВАТЬ: Spring - это одна из сред, которая может помочь с пулом, которая идеально подходит для автономных приложений.

0 голосов
/ 02 мая 2009

Я полагаю, что если вы закроете соединение, PreparedStatement будет «потеряно», но до тех пор, пока одно и то же соединение остается открытым, одно и то же PreparedStatement должно использоваться. Вы должны взглянуть на Spring, чтобы сделать это для вас, используя JdbcTemplate. Это отвлечет все это, так что вам не придется об этом беспокоиться. Просто передайте ему источник данных, и все готово.

Вот как вы можете использовать c3p0 в качестве объекта DataSource: http://forum.springframework.org/showthread.php?t=13078

Затем вы можете создать компонент JdbcTemplate и передать источник данных в качестве аргумента конструктора, а затем внедрить JdbcTemplate в любые используемые вами объекты DAO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...