2011-11-03 87 views
2

JSTL <sql:query>標記使用的數據庫連接是否持久?JSTL持久數據庫連接

  1. 我的意思是,如果我用了很多的<sql:query>標籤頁上,然後將它們 共享同一個數據庫連接?
  2. 整個頁面 連接怎麼辦? JSTL是否提供了一種在PHP中使用持久連接 如mysql_pconnect()的方法?
+1

請不要使用JSTL SQL標籤:( –

+0

什麼是在JSP中簡單的SQL處理的好的替代方法呢? –

+1

你不應該在JSP中處理SQL –

回答

0

在JSTL for 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> 
+0

好的,所以使用這種方法是可能的在頁面中共享一個連接 但是是否有可能使用JSTL在多個頁面之間共享連接 –

+0

是的,因爲您正在詢問數據源的數據連接,它取決於數據源來返回連接,它可以有單個連接或連接池。 –

0

在多個頁面中,最好使用會話範圍的後臺servlet來保存您的JPA會話。但正如前面所述,將SQL放在您的視圖中是非常糟糕的做法。可能你應該再看看你的設計,聽起來不錯。