#java #jsp #jstl #database-connection
#java #jsp #jstl #подключение к базе данных
Вопрос:
Являются ли соединения с базой данных, используемые <sql:query>
тегом JSTL, постоянными?
- Я имею в виду, если я использую много
<sql:query>
тегов на странице, будут ли они использовать одно и то же подключение к базе данных? - Как насчет подключений к странице? Предоставляет ли 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>
Значение атрибута источника данных может быть следующих типов:
- Источник данных — в этом случае будет использоваться этот источник данных.
- Строка — в этом случае поиск в JDNI будет выполняться с этим именем.
- 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 в вашем представлении действительно плохая практика. Вероятно, вам следует еще раз взглянуть на свой дизайн, звучит неправильно.