Безопасно ли ресурс использовать подготовленные операторы несколько раз? - PullRequest
1 голос
/ 04 августа 2010

Мое приложение использует некоторые подготовленные операторы в каждой итерации бесконечного цикла.Безопасно ли создавать prepareStatement перед циклом и запускать только цикл pstmt.execute в цикле?

Также интересно насчет простого выражения.

Ответы [ 3 ]

6 голосов
/ 04 августа 2010

Да, это хорошо, и, кроме того, это один из пунктов использования PreparedStatements (оператор компилируется один раз, а затем может выполняться несколько раз).

Пока вы не вызываете один и тот же оператор из нескольких (разных) потоков, это будет работать так, как вы ожидаете. Вызов одного и того же оператора из нескольких потоков может вызвать проблемы, поскольку эти условия не гарантируют поточную безопасность в этих условиях.

4 голосов
/ 04 августа 2010

"петля бесконечности"?Извините, это звучит как плохая идея.

Люди правы, когда говорят, что вызов готового выражения несколько раз в цикле - хорошая идея.Но в этом подразумевается цикл с определенным началом и концом.

Я с подозрением отношусь к вашей "бесконечной петле".Это больше похоже на слушателя, которого вы хотите сохранить в живых, чтобы ответить на какое-то событие базы данных.

Ответ "все хорошо" правильный, но, возможно, было бы интересно более подробно рассказать о том, что вы делаете.

ОБНОВЛЕНИЕ после комментария:

I 'У меня был сервер Atom RSS, который прослушивал события.Когда пришел запрос, я бы попросил слушателя RSS передать его службе, которая получит соединение из пула соединений, запустит транзакцию, создаст подготовленный оператор в области действия метода, вставит сообщение, закроет подготовленный операторв блоке finally в области действия метода зафиксируйте транзакцию и верните соединение в пул.

Драйвер JDBC или база данных будут кэшировать PreparedStatements, поэтому он не будет неэффективным.Не нужно держаться за один.

Нет бесконечного цикла.Таким образом, нет проблем с потоками.

4 голосов
/ 04 августа 2010

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

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