Подготовленные операторы и драйверы JDBC

У меня есть следующие вопросы о подготовленных заявлениях в Java.

  1. Выгодно ли использовать подготовленные операторы, когда в SQL-запросе нет предложения Where? Предположим, простой запрос Select * from tablename;

  2. Говорят, что подготовленный оператор компилируется один раз, а во второй раз подставляются только значения. Следовательно, это быстрее, так как этап проверки и компиляции запроса можно пропустить. Где хранится скомпилированная форма? Каково время жизни этой скомпилированной формы?


person Geek    schedule 08.07.2010    source источник
comment
Хорошая информация о предварительной компиляции: [stackoverflow.com/questions/5497297/ [1]: stackoverflow.com/questions/5497297/   -  person Awan    schedule 30.08.2012


Ответы (2)


  1. PreparedStatement удобен, когда есть параметры, которые нужно передать, и когда запрос должен выполняться повторно. Если есть простой запрос, который нужно запустить один раз, оператор будет работать быстрее.

  2. Кэширование происходит на сервере БД. Сервер БД имеет API, помогающие кэшировать скомпилированные запросы. Следовательно, при повторном выполнении запросов один и тот же скомпилированный запрос будет выполняться снова и повышать производительность.

person Sid    schedule 08.07.2010
comment
Даже простой выбор * из имени таблицы должен быть скомпилирован и рассчитан план выполнения. Прибыль может быть не такой уж огромной. Скомпилированная форма никогда не должна пересчитываться, но план выполнения может, в зависимости от изменений в подразумеваемых таблицах или индексах. - person Claude Vedovini; 08.07.2010
comment
Пункт №2 не совсем верен. Сервер приложений может предоставлять собственный кэш PreparedStatement, одним из них является Weblogic. - person RealHowTo; 23.04.2011

  1. Используйте PreparedStatement каждый раз, когда пользователь что-то вводит. Это поможет вам экранировать необходимые символы для предотвращения SQL-инъекций и ошибок в запросах.
person Amree    schedule 08.07.2010