Чем отличаются классы Statement и PreparedStatement в JDBC с точки зрения использования и производительности?

Statement:

Короткий ответ

Что ответить на собеседовании

Statement:

Подробный разбор

Ответ с пояснениями

Statement:

  • Используется для выполнения простых SQL-запросов без параметров.
  • Запросы компилируются каждый раз при выполнении.
  • Менее безопасен, так как подвержен SQL-инъекциям при динамическом формировании запросов.

PreparedStatement:

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

Пример:

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

Используйте PreparedStatement, если запросы повторяются с разными параметрами или требуется безопасность.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее