KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > jdbc > core > StatementCallback


1 /*
2  * Copyright 2002-2005 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.jdbc.core;
18
19 import java.sql.SQLException JavaDoc;
20 import java.sql.Statement JavaDoc;
21
22 import org.springframework.dao.DataAccessException;
23
24 /**
25  * Generic callback interface for code that operates on a JDBC Statement.
26  * Allows to execute any number of operations on a single Statement,
27  * for example a single <code>executeUpdate</code> call or repeated
28  * <code>executeUpdate</code> calls with varying SQL.
29  *
30  * <p>Used internally by JdbcTemplate, but also useful for application code.
31  *
32  * @author Juergen Hoeller
33  * @since 16.03.2004
34  * @see JdbcTemplate#execute(StatementCallback)
35  */

36 public interface StatementCallback {
37
38     /**
39      * Gets called by <code>JdbcTemplate.execute</code> with an active JDBC
40      * Statement. Does not need to care about closing the Statement or the
41      * Connection, or about handling transactions: this will all be handled
42      * by Spring's JdbcTemplate.
43      *
44      * <p><b>NOTE:</b> Any ResultSets opened should be closed in finally blocks
45      * within the callback implementation. Spring will close the Statement
46      * object after the callback returned, but this does not necessarily imply
47      * that the ResultSet resources will be closed: the Statement objects might
48      * get pooled by the connection pool, with <code>close</code> calls only
49      * returning the object to the pool but not physically closing the resources.
50      *
51      * <p>If called without a thread-bound JDBC transaction (initiated by
52      * DataSourceTransactionManager), the code will simply get executed on the
53      * JDBC connection with its transactional semantics. If JdbcTemplate is
54      * configured to use a JTA-aware DataSource, the JDBC connection and thus
55      * the callback code will be transactional if a JTA transaction is active.
56      *
57      * <p>Allows for returning a result object created within the callback, i.e.
58      * a domain object or a collection of domain objects. Note that there's
59      * special support for single step actions: see JdbcTemplate.queryForObject etc.
60      * A thrown RuntimeException is treated as application exception, it gets
61      * propagated to the caller of the template.
62      *
63      * @param stmt active JDBC Statement
64      * @return a result object, or <code>null</code> if none
65      * @throws SQLException if thrown by a JDBC method, to be auto-converted
66      * to a DataAccessException by a SQLExceptionTranslator
67      * @throws DataAccessException in case of custom exceptions
68      * @see JdbcTemplate#queryForObject(String, Class)
69      * @see JdbcTemplate#queryForRowSet(String)
70      */

71     Object JavaDoc doInStatement(Statement JavaDoc stmt) throws SQLException JavaDoc, DataAccessException;
72
73 }
74
Popular Tags