Size: a a a

2020 September 06

R

Rus in learn.java
Rus
И еще один ворпос что лучше?
try (Connection con = ConnectionPool.getConnection()) {
           StringBuilder sql = new StringBuilder();
           try (ResultSet res1 = con.prepareStatement(sql.toString()).executeQuery()) {
               while (res1.next()) {
               }
           }

           StringBuilder sql = new StringBuilder();
           try (ResultSet res1 = con.prepareStatement(sql.toString()).executeQuery()) {
               while (res1.next()) {
               }
           }
       } catch (SQLException throwables) {
       }
Или
try (Connection con = ConnectionPool.getConnection();
           Statement st = con.createStatement()) {
           StringBuilder sql = new StringBuilder();
           try (ResultSet res1 = st.executeQuery(sql.toString())) {
               while (res1.next()) {
               }
           }

           StringBuilder sql2 = new StringBuilder();
           try (ResultSet res2 = st.executeQuery(sql2.toString())) {
               while (res2.next()) {
               }
           }
       } catch (SQLException throwables) {
       }
То есть что лучше создать один statement или каждый раз создавать prepareStatement?
но
источник

В

Влад in learn.java
Rus
читал что prepareStatement это улучшенная версия statement и он быстрее.
Нет
источник

R

Rus in learn.java
Объект Statement создается методом Connection.createStatement
то есть получается просто создался объект а временных затрат нету получается?
источник

В

Влад in learn.java
Смотря как его использовать
источник

В

Влад in learn.java
Если вам нужно динамически подставлять параметры в запрос и выполнять несколько раз один стейтмент
источник

В

Влад in learn.java
Вот тогда нужно использовать препейред
источник

В

Влад in learn.java
Если единичный запрос без параметров то это обычный стейтмент
источник

В

Влад in learn.java
Если хранимая процедура то это callable стейтмент
источник

R

Rus in learn.java
Влад
Если хранимая процедура то это callable стейтмент
спс
источник

В

Влад in learn.java
В вашем случае достаточно использовать
источник

В

Влад in learn.java
Обычный
источник

В

Влад in learn.java
Так как вы затрачиваете память на кэширование запроса
источник

В

Влад in learn.java
Используя prepared
источник

R

Rus in learn.java
Влад
В вашем случае достаточно использовать
у меня будет форма с множественными селектами и инпутами
источник

В

Влад in learn.java
В одном методе дао
источник

В

Влад in learn.java
Что вам нужно сделать
источник

В

Влад in learn.java
Вот так нужно задавать себе вопрос
источник

R

Rus in learn.java
благодарю
источник

A

Anton in learn.java
Rus
Объект Statement создается методом Connection.createStatement
то есть получается просто создался объект а временных затрат нету получается?
источник

A

Anton in learn.java
Rus
читал что prepareStatement это улучшенная версия statement и он быстрее.
Кроме скорости это лучшие практики и более защищенный код.,  
How can prepared statements protect from SQL injection attacks?
https://stackoverflow.com/a/8265319

Память кеша бд жалеть не стоит - он всё равно заполнится какими-то запросами, для этого и предназначен. С точки зрения кеша важней обеспечить, чтобы запросов было меньше, т.е. не генерировать кастомные запросы на тот же поиск по полям, а по максимуму использовать условия внутри SQL, вроде таких:
....and t.field1 = nvl( :param , t.field1)...
Тогда кеши бд будут работать максимально эффективно, т.к. запросы не будут друг друга  выбивать из кешей без необходимости.
источник