Постоянные подключения к базе данных JSTL

#java #jsp #jstl #database-connection

#java #jsp #jstl #подключение к базе данных

Вопрос:

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

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

Комментарии:

1. Пожалуйста, не используйте теги JSTL SQL: (

2. Тогда какова хорошая альтернатива для простой обработки sql в JSP?

3. Вы не должны обрабатывать SQL в JSP.

Ответ №1:

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

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

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

  1. Источник данных — в этом случае будет использоваться этот источник данных.
  2. Строка — в этом случае поиск в 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>
  

Комментарии:

1. ОК. Таким образом, используя этот метод, можно будет совместно использовать соединение на странице. Но возможно ли совместное использование соединения на нескольких страницах с использованием JSTL?

2. Да, поскольку вы запрашиваете у источника данных подключение к данным. Возврат соединения зависит от источника данных, он может иметь либо одно соединение, либо пул соединений.

Ответ №2:

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