remm 01/06/21 13:55:18
Modified: src/stores/slidestore/reference JDBCDescriptorsStore.java
Log:
- Improve the efficiency of some of the methods which do write operations
on the database by reusing the prepared statements.
- Some prepared statements were not properly closed.
- Many thanks to Mark Hortman <mark.hortman at jcafeinc.com> for this
patch.
Revision Changes Path
1.19 +36 -21
jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java
Index: JDBCDescriptorsStore.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- JDBCDescriptorsStore.java 2001/06/20 06:23:26 1.18
+++ JDBCDescriptorsStore.java 2001/06/21 20:55:14 1.19
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v
1.18 2001/06/20 06:23:26 msmith Exp $
- * $Revision: 1.18 $
- * $Date: 2001/06/20 06:23:26 $
+ * $Header:
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v
1.19 2001/06/21 20:55:14 remm Exp $
+ * $Revision: 1.19 $
+ * $Date: 2001/06/21 20:55:14 $
*
* ====================================================================
*
@@ -84,7 +84,7 @@
* JDBC 1.0 and 2.0 compliant store implementation.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
- * @version $Revision: 1.18 $
+ * @version $Revision: 1.19 $
*/
public class JDBCDescriptorsStore
@@ -568,6 +568,7 @@
// Load each permission
childrenVector.addElement(res.getString(CHILDREN_CHILDURI));
}
+ closeStatement(statement);
statement = connection.prepareStatement
("select * from links where linkto= ?");
@@ -667,15 +668,18 @@
statement.execute();
closeStatement(statement);
+ statement = null;
Enumeration children = object.enumerateChildren();
while (children.hasMoreElements()) {
- statement = connection.prepareStatement
- ("insert into children values(?, ?)");
+ if (statement == null){
+ statement = connection.prepareStatement
+ ("insert into children values(?, ?)");
+ }
statement.setString(1, object.getUri());
statement.setString(2, (String)children.nextElement());
statement.execute();
- closeStatement(statement);
}
+ closeStatement(statement);
// Updating inbound links
/*
@@ -757,16 +761,19 @@
statement.execute();
closeStatement(statement);
+ statement = null;
// Inserting children
Enumeration children = object.enumerateChildren();
while (children.hasMoreElements()) {
- statement = connection.prepareStatement
- ("insert into children values(?,?)");
+ if (statement == null){
+ statement = connection.prepareStatement
+ ("insert into children values(?,?)");
+ }
statement.setString(1, uri.toString());
statement.setString(2, (String) children.nextElement());
statement.execute();
- closeStatement(statement);
}
+ closeStatement(statement);
// Updating inbound links
/*
@@ -1259,6 +1266,7 @@
new NodeRevisionNumber
(res.getString(LATESTREVISIONS_NUMBER)));
}
+ closeStatement(statement);
statement = connection.prepareStatement
("select * from revision where uri= ?");
@@ -1269,8 +1277,10 @@
String currentRevisionNumber = res.getString(REVISION_NUMBER);
// We parse the revision list of the object
- statement2 = connection.prepareStatement
- ("select * from branches where uri = ? and xnumber = ?");
+ if (statement2 == null){
+ statement2 = connection.prepareStatement
+ ("select * from branches where uri = ? and xnumber = ?");
+ }
statement2.setString(1, uri.toString());
statement2.setString(2, currentRevisionNumber);
ResultSet res2 = statement2.executeQuery();
@@ -1285,8 +1295,8 @@
childList);
res2.close();
- closeStatement(statement2);
}
+ closeStatement(statement2);
revisionDescriptors = new NodeRevisionDescriptors
(uri.toString(), initialRevision, workingRevisions,
@@ -1553,21 +1563,23 @@
closeStatement(statement);
// Creating revision labels
-
+ statement = null;
Enumeration labels = revisionDescriptor.enumerateLabels();
while (labels.hasMoreElements()) {
- statement = connection.prepareStatement
- ("insert into label values(?,?,?)");
+ if (statement == null){
+ statement = connection.prepareStatement
+ ("insert into label values(?,?,?)");
+ }
statement.setString(1, uri.toString());
statement.setString
(2, revisionDescriptor.getRevisionNumber().toString());
statement.setString(3, (String)labels.nextElement());
statement.execute();
- closeStatement(statement);
}
-
+ closeStatement(statement);
// Creating associated properties
+ statement = null;
Enumeration properties = revisionDescriptor.enumerateProperties();
while (properties.hasMoreElements()) {
NodeProperty property =
@@ -1576,8 +1588,10 @@
if (property.isProtected()) {
protectedProperty = 1;
}
- statement = connection.prepareStatement
- ("insert into property values(?,?,?,?,?,?,?)");
+ if (statement == null){
+ statement = connection.prepareStatement
+ ("insert into property values(?,?,?,?,?,?,?)");
+ }
statement.setString(1, uri.toString());
statement.setString
(2, revisionDescriptor.getRevisionNumber().toString());
@@ -1587,8 +1601,9 @@
statement.setString(6, property.getType());
statement.setInt(7, protectedProperty);
statement.execute();
- closeStatement(statement);
}
+ closeStatement(statement);
+
} catch (SQLException e) {
throw new ServiceAccessException(this, e);