JSTL持久数据库连接

时间:2011-11-03 09:23:58

标签: java jsp jstl database-connection

JSTL <sql:query>标记使用的数据库连接是否持久?

  1. 我的意思是如果我在页面上使用了很多<sql:query>标签,那么它们就会出现 共享相同的数据库连接?
  2. 整个页面怎么样? 连接? JSTL是否提供了使用持久连接的方法 像PHP中的mysql_pconnect()一样?

2 个答案:

答案 0 :(得分:0)

在JSTL for SQL标记中,您可以提供要用于数据库连接的数据源。 决定数据库连接管理的数据源。 SQL标记提供如下数据源信息:

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

datasource属性值可以是以下类型:

  1. 数据源 - 在这种情况下将使用此数据源。
  2. String - 在这种情况下,将使用该名称进行JDNI查找。
  3. NULL - 在这种情况下,它将使用由tag设置的数据源。
  4. 如果您在事务代码中有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 :(得分:0)

在多个页面中,最好使用具有会话范围的支持servlet来保存JPA会话。但正如前面所述,将SQL放在您的视图中是非常糟糕的做法。可能你应该再次看一下你的设计,听起来不正确。