Поведение вызываемых и подготовленных операторов на сервере приложений - PullRequest
0 голосов
/ 23 ноября 2010


CallableStatement и PreparedStatements предварительно скомпилированы.Они сделаны по отношению к соединению?Я имею в виду, давайте предположим, что в пуле соединений сервера приложений находится около 100 объектов подключения.Есть класс, который использует Callable и PreparedStatements.Допустим, для этого используется метод:

public  void invokePreparedAndCallableStatements(){  
  //Fetches connection from pool  
  Connection con = getConnectionFromPool();
  CallableStatement cs = con.prepareCall(.....);
  cs.register...(...);
  cs.execute();
  ...
  ...
  PreparedStatement st = con.prepareStatement(...);
  st.setXXX(..);
  st.executeUpdate();
  ...
 }

Теперь, когда метод вызывается в первый раз, соединение выбирается из пула, и запрос обрабатывается.Вызываемые и подготовленные заявления составляются.Когда метод вызывается еще 99 раз, каждый раз, когда из пула выбирается другое соединение, будут ли операторы выполняться для каждого соединения?
Каков будет наиболее оптимальный способ использования операторов в этом контексте?Я не могу сделать их (con.prepareCall () или con.prepareStatement ()) статическими, потому что соединение не статично.

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

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

0 голосов
/ 23 ноября 2010

Заявления будут предварительно скомпилированы. Объединение будет основано на указанных вами параметрах.

Примечание. Если вы используете JDBC 3.0, вы также можете объединить ваши PreparedStatements. Справка: Что нового в JDBC 3.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...