Class IsolationLevelDataSourceAdapter
- All Implemented Interfaces:
- Wrapper,- CommonDataSource,- DataSource,- InitializingBean
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. UserCredentialsDataSourceAdapter.setCredentialsForCurrentThread(java.lang.String, java.lang.String)).
 
WARNING: This adapter simply calls
 Connection.setTransactionIsolation(int) and/or
 Connection.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.
- Since:
- 2.0.3
- Author:
- Juergen Hoeller
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected ConnectiondoGetConnection(String username, String password) Applies the current isolation level value and read-only flag to the returned Connection.protected IntegerDetermine the current isolation level: either the transaction's isolation level or a statically defined isolation level.protected BooleanDetermine the current read-only flag: by default, the transaction's read-only hint.protected IntegerReturn the statically specified isolation level, ornullif none.voidsetIsolationLevel(int isolationLevel) Specify the default isolation level to use for Connection retrieval, according to the JDBCConnectionconstants (equivalent to the corresponding SpringTransactionDefinitionconstants).final voidsetIsolationLevelName(String constantName) Set the default isolation level by the name of the corresponding constant inTransactionDefinition, e.g.Methods inherited from class org.springframework.jdbc.datasource.UserCredentialsDataSourceAdaptergetConnection, getConnection, removeCredentialsFromCurrentThread, setCatalog, setCredentialsForCurrentThread, setPassword, setSchema, setUsernameMethods inherited from class org.springframework.jdbc.datasource.DelegatingDataSourceafterPropertiesSet, getLoginTimeout, getLogWriter, getParentLogger, getTargetDataSource, isWrapperFor, obtainTargetDataSource, setLoginTimeout, setLogWriter, setTargetDataSource, unwrapMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface javax.sql.CommonDataSourcecreateShardingKeyBuilderMethods inherited from interface javax.sql.DataSourcecreateConnectionBuilder
- 
Constructor Details- 
IsolationLevelDataSourceAdapterpublic IsolationLevelDataSourceAdapter()
 
- 
- 
Method Details- 
setIsolationLevelNameSet the default isolation level by the name of the corresponding constant inTransactionDefinition, 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
- Throws:
- IllegalArgumentException
- See Also:
 
- 
setIsolationLevelpublic void setIsolationLevel(int isolationLevel) Specify the default isolation level to use for Connection retrieval, according to the JDBCConnectionconstants (equivalent to the corresponding SpringTransactionDefinitionconstants).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. - See Also:
- 
- Connection.TRANSACTION_READ_UNCOMMITTED
- Connection.TRANSACTION_READ_COMMITTED
- Connection.TRANSACTION_REPEATABLE_READ
- Connection.TRANSACTION_SERIALIZABLE
- TransactionDefinition.ISOLATION_READ_UNCOMMITTED
- TransactionDefinition.ISOLATION_READ_COMMITTED
- TransactionDefinition.ISOLATION_REPEATABLE_READ
- TransactionDefinition.ISOLATION_SERIALIZABLE
- TransactionDefinition.getIsolationLevel()
- TransactionSynchronizationManager.getCurrentTransactionIsolationLevel()
 
 
- 
getIsolationLevelReturn the statically specified isolation level, ornullif none.
- 
doGetConnectionprotected Connection doGetConnection(@Nullable String username, @Nullable String password) throws SQLException Applies the current isolation level value and read-only flag to the returned Connection.- Overrides:
- doGetConnectionin class- UserCredentialsDataSourceAdapter
- Parameters:
- username- the username to use
- password- the password to use
- Returns:
- the Connection
- Throws:
- SQLException
- See Also:
 
- 
getCurrentIsolationLevelDetermine the current isolation level: either the transaction's isolation level or a statically defined isolation level.- Returns:
- the current isolation level, or nullif none
- See Also:
 
- 
getCurrentReadOnlyFlagDetermine 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
- See Also:
 
 
-