public class IsolationLevelDataSourceAdapter extends UserCredentialsDataSourceAdapter
getConnection
呼び出しに適用する、ターゲット DataSource
用のアダプター。指定されている場合は、読み取り専用フラグも適用します。目的の分離レベル(およびユーザー資格情報)が構成されていないターゲット JNDI DataSource をプロキシするために使用できます。クライアントコードは、通常のようにこの DataSource で機能し、そのような設定について心配する必要はありません。
スーパークラス UserCredentialsDataSourceAdapter
から特定のユーザー資格情報を適用する機能を継承します。その機能(UserCredentialsDataSourceAdapter.setCredentialsForCurrentThread(java.lang.String, java.lang.String)
など)の詳細については、後者の javadoc を参照してください。
警告 : このアダプターは、アダプターから取得したすべての接続に対して、Connection.setTransactionIsolation(int)
または Connection.setReadOnly(boolean)
、あるいはその両方を呼び出すだけです。ただし、これらの設定はリセットされません。むしろ、ターゲット DataSource が接続プール処理の一部としてそのようなリセットを実行することを期待しています。 ターゲット DataSource がそのようなトランザクション状態を適切にクリーンアップすることを確認してください。
コンストラクターと説明 |
---|
IsolationLevelDataSourceAdapter() |
修飾子と型 | メソッドと説明 |
---|---|
protected java.sql.Connection | doGetConnection(java.lang.String username, java.lang.String password) 現在の分離レベル値と読み取り専用フラグを、返された接続に適用します。 |
protected java.lang.Integer | getCurrentIsolationLevel() 現在の分離レベルを決定します: トランザクションの分離レベルまたは静的に定義された分離レベル。 |
protected java.lang.Boolean | getCurrentReadOnlyFlag() 現在の読み取り専用フラグを決定します。デフォルトでは、トランザクションの読み取り専用ヒントです。 |
protected java.lang.Integer | getIsolationLevel() 静的に指定された分離レベルを返します。ない場合は null を返します。 |
void | setIsolationLevel(int isolationLevel) JDBC Connection 定数(対応する Spring TransactionDefinition 定数と同等)に従って、接続の取得に使用するデフォルトの分離レベルを指定します。 |
void | setIsolationLevelName(java.lang.String constantName) TransactionDefinition の対応する定数の名前でデフォルトの分離レベルを設定します。 |
getConnection, getConnection, removeCredentialsFromCurrentThread, setCatalog, setCredentialsForCurrentThread, setPassword, setSchema, setUsername
afterPropertiesSet, getLoginTimeout, getLogWriter, getParentLogger, getTargetDataSource, isWrapperFor, obtainTargetDataSource, setLoginTimeout, setLogWriter, setTargetDataSource, unwrap
public final void setIsolationLevelName(java.lang.String constantName) throws java.lang.IllegalArgumentException
TransactionDefinition
の対応する定数の名前でデフォルトの分離レベルを設定します。"ISOLATION_SERIALIZABLE"。指定しない場合、ターゲット DataSource のデフォルトが使用されます。トランザクション固有の分離値は、DataSource レベルで指定された分離設定を常にオーバーライドすることに注意してください。
constantName
- 定数の名前 java.lang.IllegalArgumentException
TransactionDefinition.ISOLATION_READ_UNCOMMITTED
, TransactionDefinition.ISOLATION_READ_COMMITTED
, TransactionDefinition.ISOLATION_REPEATABLE_READ
, TransactionDefinition.ISOLATION_SERIALIZABLE
, setIsolationLevel(int)
public void setIsolationLevel(int isolationLevel)
Connection
定数(対応する Spring TransactionDefinition
定数と同等)に従って、接続の取得に使用するデフォルトの分離レベルを指定します。指定しない場合、ターゲット DataSource のデフォルトが使用されます。トランザクション固有の分離値は、DataSource レベルで指定された分離設定を常にオーバーライドすることに注意してください。
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()
@Nullable protected java.lang.Integer getIsolationLevel()
null
を返します。protected java.sql.Connection doGetConnection(@Nullable java.lang.String username, @Nullable java.lang.String password) throws java.sql.SQLException
UserCredentialsDataSourceAdapter
の doGetConnection
username
- 使用するユーザー名 password
- 使用するパスワード java.sql.SQLException
getCurrentIsolationLevel()
, getCurrentReadOnlyFlag()
@Nullable protected java.lang.Integer getCurrentIsolationLevel()
null
TransactionSynchronizationManager.getCurrentTransactionIsolationLevel()
, setIsolationLevel(int)
@Nullable protected java.lang.Boolean getCurrentReadOnlyFlag()
TransactionSynchronizationManager.isCurrentTransactionReadOnly()