Sobes.tech
Junior — Middle

JDBC-те Statement және PreparedStatement сыныптарының қолданылуы мен өнімділігі тұрғысынан айырмашылықтары қандай?

sobes.tech AI

AI-дан жауап

Тұжырымдама:

  • Параметрсіз қарапайым 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-ті пайдаланыңыз, егер сұраулар әртүрлі параметрлермен қайталанатын болса немесе қауіпсіздік қажет болса.