You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ma...@apache.org on 2003/02/02 04:36:19 UTC
cvs commit: jakarta-ojb/src/java/org/apache/ojb/broker/accesslayer SqlBasedRsIterator.java
mattbaird 2003/02/01 19:36:19
Modified: src/java/org/apache/ojb/broker/accesslayer
SqlBasedRsIterator.java
Log:
use scrollable param for performance reasons, also use the new platform-aware close statement in a finally block to avoid leaking.
Revision Changes Path
1.11 +13 -5 jakarta-ojb/src/java/org/apache/ojb/broker/accesslayer/SqlBasedRsIterator.java
Index: SqlBasedRsIterator.java
===================================================================
RCS file: /home/cvs//jakarta-ojb/src/java/org/apache/ojb/broker/accesslayer/SqlBasedRsIterator.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- SqlBasedRsIterator.java 15 Jan 2003 10:43:28 -0000 1.10
+++ SqlBasedRsIterator.java 2 Feb 2003 03:36:18 -0000 1.11
@@ -56,6 +56,7 @@
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.PersistenceBrokerException;
+import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.singlevm.PersistenceBrokerImpl;
@@ -81,7 +82,12 @@
m_sql = sqlStatement;
if (logger.isDebugEnabled())
logger.debug("SqlBasedRsIterator(" + sqlStatement + ", " + cld + ")");
- m_rsAndStmt = broker.serviceJdbcAccess().executeSQL(sqlStatement, cld);
+ /**
+ * MBAIRD: We should think about parameterizing this call to accept a scrollable setting that would allow
+ * us to use the faster NOT_SCROLLABLE mode if the client knows he isn't going to use any cursor control
+ * options.
+ */
+ m_rsAndStmt = broker.serviceJdbcAccess().executeSQL(sqlStatement, cld, Query.SCROLLABLE);
m_broker = broker;
m_cld = cld;
itemProxyClass = cld.getProxyClass();
@@ -129,20 +135,22 @@
countSql = "select count(*) " + m_sql.substring(fromPos);
}
- rsStmt = m_broker.serviceJdbcAccess().executeSQL(countSql, m_cld);
+ rsStmt = m_broker.serviceJdbcAccess().executeSQL(countSql, m_cld, Query.NOT_SCROLLABLE);
try
{
if (rsStmt.m_rs.next())
{
count = rsStmt.m_rs.getInt(1);
}
- rsStmt.m_rs.close();
- rsStmt.m_stmt.close();
}
catch (SQLException e)
{
throw new PersistenceBrokerException(e);
}
+ finally
+ {
+ rsStmt.close();
+ }
return count;
}
}