Вопрос

It is implementation-defined as to whether getGeneratedKeys will return generated values after invoking the executeBatch method. (JDBC 4.0 Спецификация 2006, стр. 135).

У меня есть два варианта. Вставьте каждую строку отдельно и получите ключ. или сделайте пакетную вставку, а затем запросите ключи.

Чтобы избежать переодевания для запроса нескольких ключей, я мог бы использовать этот подход здесь. Анкет Например, подготовленные заявления с разными размерами. А затем разбил мой «партийный запрос» в наименьшее возможное заявление.

Какой более быстрый метод?

Это было полезно?

Решение

Это зависит.

У меня нет чисел, независимо от того, executeBatch() на самом деле быстрее, чем использование PreparedStatement неоднократно, так что мое предложение таково:

  1. Попробуйте, будется ли getGeneratedKeys() Работает на вашего драйвера JDBC. Если это не сработает, пакетные вставки в любом случае не будут работать для вас.

  2. Напишите тестовый пример для обоих и измерьте производительность. Это дает вам реальные данные, чтобы основать ваше решение. Все остальное - это просто догадки (и неверно 90% случаев).

РЕДАКТИРОВАТЬ Если вы хотите сохранить свое приложение DB Agnostic, добавьте тест в свое приложение и запустите его в таблице Temp/Test. Если тест преуспевает, выбрали реализацию, которая использует пакетные обновления, в противном случае возвращается к грубой силе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top