Я хочу уменьшить круговые поездки в своем приложении, чтобы повысить производительность. Я хочу использовать PreparedStatement
с их множеством преимуществ.SQL: Операторы пакетной обработки с привязанными переменными
Это пример того, что я придумал .. обобщается с деталями Опущенные ..
Class.forName("..Driver");
Connection connection = DriverManager.getConnection(..);
PreparedStatement statement = connection.prepareStatement("UPDATE Table SET XmlData = ? WHERE SomeGUID = ?; INSERT INTO SomeTable (Col1,Col2) VALUES (?, ?)");
try{
statement.setString(1, "<XmlData></XmlData>");
statement.setString(2, "32ABD5-438B0-..");
statement.setString(3, "ABC");
statement.setString(4, "XYZ");
statement.execute();
connection.commit();
}
catch {
connection.rollback();
}
finally {
statement.close();
connection.close();
}
(Опять же, это не фактический код, только упрощенный пример)
В общем, я пытаюсь выполнить несколько операторов вставки/обновления в одном заявлении, чтобы уменьшить трафик в оба конца. Это эффективный способ сделать это или есть более приемлемый подход?
У меня могло быть несколько тысяч заявлений для одной транзакции. Я, скорее всего, сегментирую заявление в блоках разумного размера, чтобы предотвратить таймауты при выполнении одного оператора.
Я буду поддерживать нескольких поставщиков БД, но будет использовать ANSI SQL, поэтому не должно быть проблем. Если необходимо, я могу использовать интеллектуальные возможности DAL. Таким образом, это не проблема.
Любые советы/предложения?