public class

IsolationLevelDataSourceAdapter

extends UserCredentialsDataSourceAdapter
java.lang.Object
   ↳ org.springframework.jdbc.datasource.DelegatingDataSource
     ↳ org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter
       ↳ org.springframework.jdbc.datasource.IsolationLevelDataSourceAdapter
Known Direct Subclasses

Class Overview

An adapter for a target javax.sql.DataSource, applying the current Spring transaction's isolation level (and potentially specified user credentials) to every getConnection call. Also applies the read-only flag, if specified.

Can be used to proxy a target JNDI DataSource that does not have the desired isolation level (and user credentials) configured. Client code can work with this DataSource as usual, not worrying about such settings.

Inherits the capability to apply specific user credentials from its superclass UserCredentialsDataSourceAdapter; see the latter's javadoc for details on that functionality (e.g. setCredentialsForCurrentThread(String, String)).

WARNING: This adapter simply calls setTransactionIsolation(int) and/or setReadOnly(boolean) for every Connection obtained from it. It does, however, not reset those settings; it rather expects the target DataSource to perform such resetting as part of its connection pool handling. Make sure that the target DataSource properly cleans up such transaction state.

Summary

Public Constructors
IsolationLevelDataSourceAdapter()
Public Methods
void setIsolationLevel(int isolationLevel)
Specify the default isolation level to use for Connection retrieval, according to the JDBC Connection constants (equivalent to the corresponding Spring TransactionDefinition constants).
final void setIsolationLevelName(String constantName)
Set the default isolation level by the name of the corresponding constant in TransactionDefinition, e.g.
Protected Methods
Connection doGetConnection(String username, String password)
Applies the current isolation level value and read-only flag to the returned Connection.
Integer getCurrentIsolationLevel()
Determine the current isolation level: either the transaction's isolation level or a statically defined isolation level.
Boolean getCurrentReadOnlyFlag()
Determine the current read-only flag: by default, the transaction's read-only hint.
Integer getIsolationLevel()
Return the statically specified isolation level, or null if none.
[Expand]
Inherited Methods
From class org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter
From class org.springframework.jdbc.datasource.DelegatingDataSource
From class java.lang.Object
From interface java.sql.Wrapper
From interface javax.sql.CommonDataSource
From interface javax.sql.DataSource
From interface org.springframework.beans.factory.InitializingBean

Public Constructors

public IsolationLevelDataSourceAdapter ()

Public Methods

public void setIsolationLevel (int isolationLevel)

Specify the default isolation level to use for Connection retrieval, according to the JDBC Connection constants (equivalent to the corresponding Spring TransactionDefinition constants).

If not specified, the target DataSource's default will be used. Note that a transaction-specific isolation value will always override any isolation setting specified at the DataSource level.

public final void setIsolationLevelName (String constantName)

Set the default isolation level by the name of the corresponding constant in TransactionDefinition, e.g. "ISOLATION_SERIALIZABLE".

If not specified, the target DataSource's default will be used. Note that a transaction-specific isolation value will always override any isolation setting specified at the DataSource level.

Parameters
constantName name of the constant

Protected Methods

protected Connection doGetConnection (String username, String password)

Applies the current isolation level value and read-only flag to the returned Connection.

Parameters
username the username to use
password the password to use
Returns
  • the Connection
Throws
SQLException

protected Integer getCurrentIsolationLevel ()

Determine the current isolation level: either the transaction's isolation level or a statically defined isolation level.

Returns
  • the current isolation level, or null if none

protected Boolean getCurrentReadOnlyFlag ()

Determine the current read-only flag: by default, the transaction's read-only hint.

Returns
  • whether there is a read-only hint for the current scope

protected Integer getIsolationLevel ()

Return the statically specified isolation level, or null if none.