KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > transaction > SavepointManager


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.transaction;
18
19 /**
20  * Interface that specifies an API to programmatically manage transaction
21  * savepoints in a generic fashion. Extended by TransactionStatus to
22  * expose savepoint management functionality for a specific transaction.
23  *
24  * <p>Note that savepoints can only work within an active transaction.
25  * Just use this programmatic savepoint handling for advanced needs;
26  * else, a subtransaction with PROPAGATION_NESTED is preferable.
27  *
28  * <p>This interface is inspired by JDBC 3.0's Savepoint mechanism
29  * but is independent from any specific persistence technology.
30  *
31  * @author Juergen Hoeller
32  * @since 1.1
33  * @see TransactionStatus
34  * @see TransactionDefinition#PROPAGATION_NESTED
35  * @see java.sql.Savepoint
36  */

37 public interface SavepointManager {
38
39     /**
40      * Create a new savepoint. You can roll back to a specific savepoint
41      * via <code>rollbackToSavepoint</code>, and explicitly release a
42      * savepoint that you don't need anymore via <code>releaseSavepoint</code>.
43      * <p>Note that most transaction managers will automatically release
44      * savepoints at transaction completion.
45      * @return a savepoint object, to be passed into rollbackToSavepoint
46      * or releaseSavepoint
47      * @throws NestedTransactionNotSupportedException if the underlying
48      * transaction does not support savepoints
49      * @throws TransactionException if the savepoint could not be created,
50      * for example because the transaction is not in an appropriate state
51      * @see java.sql.Connection#setSavepoint
52      */

53     Object JavaDoc createSavepoint() throws TransactionException;
54
55     /**
56      * Roll back to the given savepoint. The savepoint will be
57      * automatically released afterwards.
58      * @param savepoint the savepoint to roll back to
59      * @throws NestedTransactionNotSupportedException if the underlying
60      * transaction does not support savepoints
61      * @throws TransactionException if the rollback failed
62      * @see java.sql.Connection#rollback(java.sql.Savepoint)
63      */

64     void rollbackToSavepoint(Object JavaDoc savepoint) throws TransactionException;
65
66     /**
67      * Explicitly release the given savepoint.
68      * <p>Note that most transaction managers will automatically release
69      * savepoints at transaction completion.
70      * <p>Implementations should fail as silently as possible if
71      * proper resource cleanup will still happen at transaction completion.
72      * @param savepoint the savepoint to release
73      * @throws NestedTransactionNotSupportedException if the underlying
74      * transaction does not support savepoints
75      * @throws TransactionException if the release failed
76      * @see java.sql.Connection#releaseSavepoint
77      */

78     void releaseSavepoint(Object JavaDoc savepoint) throws TransactionException;
79
80 }
81
Popular Tags