Постоянные соединения с базой данных JSTL - PullRequest
2 голосов
/ 03 ноября 2011

Сохраняются ли подключения к базе данных, используемые тегом JSTL <sql:query>?

  1. Я имею в виду, если я буду использовать много тегов <sql:query> на странице, будут ли они использовать одну и ту же базу данных?
  2. Как насчет всей страницы соединения? Предоставляет ли JSTL способ использования постоянных соединений? как mysql_pconnect() в PHP?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

На нескольких страницах лучше иметь вспомогательный сервлет с областью действия сеанса для хранения сеанса JPA. Но, как уже говорилось ранее, ставить SQL на ваш взгляд - это действительно плохая практика. Возможно, вам стоит снова взглянуть на свой дизайн, это не звучит правильно.

0 голосов
/ 03 ноября 2011

В JSTL для тегов SQL вы можете указать источник данных, который вы хотите использовать для соединений с БД. Это источник данных, который определяет управление соединениями с БД .Тэг SQL предоставляет информацию об источнике данных следующим образом:

<sql:query var="order" 
  dataSource="${applicationScope.orderDS}">
   select * from PUBLIC.orders where id = ?
   <sql:param value="${id}" />
</sql:query>

Значение атрибута источника данных может быть следующих типов:

  1. Источник данных - в этом случае будет использоваться этот источник данных.
  2. String - в этом случае поиск JDNI будет выполняться с этим именем.
  3. NULL - в этом случае он будет использовать источник данных, заданный тегом.

Если у вас есть теги SQL-запроса внутри тега транзакции .Все запросы внутри транзакции используют одно и то же соединение для управления транзакциями.

<sql:transaction>
   <sql:query var="order" 
      dataSource="${applicationScope.orderDS}">
         select * from PUBLIC.orders where id = ?
         <sql:param value="${id}" />
   </sql:query>
   <sql:update var="order" 
      sql="update PUBLIC.orders set book_name = ? where id = ?">
         <sql:param value="${name}" />
         <sql:param value="${id}" />
   </sql:query>
<sql:transaction>
...