我使用以下代码从 jsp 查询数据库,但我想了解更多关于幕后发生的事情。
这是我的两个主要问题。
标签是直接访问ResultSet,还是将查询结果存储在内存中的数据结构中?
连接什么时候关闭?
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:query var="query" dataSource="${ds}" sql="${listQuery}"></sql:query>
<c:forEach var="row" items="${query.rows}" begin="0">
${row.data }
${row.more_data }
</c:forEach>
注意:我一直反对在 jsp 中运行查询,但是我的结果集太大,无法存储在我的操作和 jsp 之间的内存中。使用这个标签库看起来是最简单的解决方案。
基于 org.apache.taglibs.standard.tag.common.sql.QueryTagSupport 源的观察
taglib 遍历 ResultSet 并将所有数据放入数组、映射和列表中。因此,在开始循环之前,所有内容都已加载到内存中。
当遇到查询开始标记时打开连接(doStartTag 方法)。当遇到查询结束标记时检索结果(doEndTag 方法)。连接在 doFinally 方法中关闭。
简而言之,这绝对是可怕的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)