2012-06-04 2 views
1

Мой общий вопрос:: Неэффективная/неправильная практика для вызова preparedStatement.executeBatch(), если в пакете есть только один запрос?Выполнять пакет с одним запросом?

Я пишу общий метод для Java Helper Library для выполнения запроса. Существует javabean под названием HelperQuery, который содержит список массивов другого javabean под названием QueryParameter, который содержит тип (например, STRING, BLOB, INT и т. Д.) И значение. QueryParameter используется для заполнения HelperQueryPreparedStatement. Во многих случаях будет только один массив из QueryParameter s.

Моего Конкретный Вопрос: Должен ли я обращаться с вещами по-другому, если есть только один массив QueryParameter с или было бы хорошо, чтобы обращаться с вещами точно так же, независимо от того, сколько QueryParameter s есть?

ответ

2

executeBatch является «super» метод от родительского PreparedStatement «s Statement который возвращает int[], который указывает успех/провал выполненных запросов и executeQuery возвращает ResultSet. Поэтому было бы неплохо, если бы они были совершенно разными вызовами метода, поэтому разработчик может обрабатывать их по-разному. Я бы рекомендовал:

  1. An executeQuery(HelperQuery helperQuery) метода, который будет возвращать связанный ResultSet и получит только первые QueryParameter сек от HelperQuery (для удобства) и другого метода, который разработчик может указать, какие QueryParameter набор для использования (либо есть они указывают номер списка QueryParameter или просто передают в ящике QueryParameter (я рекомендую второй из двух)).
  2. Метод executeBatch(HelperQuery helperQuery, который вернет int[], и разработчик может справиться с этим, как пожелает.

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

+0

Реализовал ответ, поскольку я генерировал код для вопроса. – kentcdodds

Смежные вопросы