Встречается на собеседованиях • сегодня

В чем разница между Statement и PreparedStatement в JDBC

Statement и PreparedStatement — интерфейсы JDBC для выполнения SQL-запросов, но с ключевыми отличиями:

  1. Производительность
    PreparedStatement компилируется один раз и кэшируется, что ускоряет повторные выполнения. Statement компилируется каждый раз.

  2. Безопасность
    PreparedStatement защищает от SQL-инъекций благодаря параметризации. В Statement параметры встраиваются напрямую, что рискованно.

  1. Синтаксис
    PreparedStatement использует placeholders (?), Statement — конкатенацию строк.

Пример:

java
// Statement (уязвимо к инъекциям)
String sql = "SELECT * FROM users WHERE name = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);

// PreparedStatement (безопасно)
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, userInput); // параметр подставляется безопасно
ResultSet rs = pstmt.executeQuery();

Итог:
PreparedStatement — предпочтительнее для параметризованных запросов, Statement — для динамических DDL-операций (если нет риска инъекций).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы