Я просто тестирую сложную систему и обнаружил, что запросы, проходящие через Spring, очень медленные.
Это добавляет ~ 600 мс.
Код теста сравнивает следующее:
case TEMPLATE:
{
t = System.currentTimeMillis();
jdbcTemplate.update(getUnnamedPreparedStatement(query), new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
int i = 1;
for (Object o : queryParameters) {
ps.setObject(i++, o);
}
}
});
break;
}
case PREPAREDSTATEMENT:
{
Connection c = dataSource.getConnection();
t = System.currentTimeMillis();
PreparedStatement ps = c.prepareStatement(getUnnamedPreparedStatement(query));
int index = 1;
for (Object parameter: queryParameters) {
ps.setObject(index++, parameter);
}
ResultSet rs = ps.executeQuery();
rs.next();
break;
}
Оба запроса дают одинаковый результат, и порядок не имеет значения.Более того, это не зависит от типа запроса (т. Е. SELECT, UPDATE).
Я выполнил тест десять раз, и результаты стабильны.
Что делает Spring jdbcTemplate,что PreparedStatement не делает?