Sobes.tech
Назад к вопросам
Junior — Middle
69

Чем отличаются типы SQL-запросов Statement и PreparedStatement в контексте Java, и в чем их преимущества и недостатки?

Ответ от нейросети

sobes.tech AI

Statement и PreparedStatement — это интерфейсы для выполнения SQL-запросов в Java, но они отличаются по способу подготовки и исполнения запросов.

  • Statement:

    • Запрос формируется как строка и отправляется на выполнение напрямую.
    • Подходит для простых, одноразовых запросов.
    • Не защищает от SQL-инъекций.
    • Каждый вызов компилирует запрос заново, что снижает производительность при повторных вызовах.
  • PreparedStatement:

    • Запрос предварительно компилируется с параметрами-заполнителями ("?").
    • Позволяет многократно выполнять один и тот же запрос с разными параметрами.
    • Защищает от SQL-инъекций, так как параметры передаются отдельно.
    • Повышает производительность при повторных вызовах.

Пример использования PreparedStatement:

String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 10);
ResultSet rs = ps.executeQuery();

В итоге, PreparedStatement предпочтительнее для динамических запросов с параметрами и для повышения безопасности и производительности.