Example usage for org.springframework.jdbc.datasource ConnectionHolder createSavepoint

List of usage examples for org.springframework.jdbc.datasource ConnectionHolder createSavepoint

Introduction

In this page you can find the example usage for org.springframework.jdbc.datasource ConnectionHolder createSavepoint.

Prototype

public Savepoint createSavepoint() throws SQLException 

Source Link

Document

Create a new JDBC 3.0 Savepoint for the current Connection, using generated savepoint names that are unique for the Connection.

Usage

From source file:org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.java

/**
 * This implementation creates a JDBC 3.0 Savepoint and returns it.
 * @see java.sql.Connection#setSavepoint
 *//*from   w  w  w  .  j  av a  2s.  com*/
@Override
public Object createSavepoint() throws TransactionException {
    ConnectionHolder conHolder = getConnectionHolderForSavepoint();
    try {
        if (!conHolder.supportsSavepoints()) {
            throw new NestedTransactionNotSupportedException(
                    "Cannot create a nested transaction because savepoints are not supported by your JDBC driver");
        }
        if (conHolder.isRollbackOnly()) {
            throw new CannotCreateTransactionException(
                    "Cannot create savepoint for transaction which is already marked as rollback-only");
        }
        return conHolder.createSavepoint();
    } catch (SQLException ex) {
        throw new CannotCreateTransactionException("Could not create JDBC savepoint", ex);
    }
}