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

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

Introduction

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

Prototype

public boolean supportsSavepoints() throws SQLException 

Source Link

Document

Return whether JDBC 3.0 Savepoints are supported.

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 ww w  .  j a  v a 2s.  c  om
@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);
    }
}