public abstract class DataSourceUtils extends ObjectSE
DataSource
SE から JDBC 接続を取得するための静的メソッドを提供するヘルパークラス。Spring 管理のトランザクション接続の特別なサポートが含まれています。DataSourceTransactionManager
または JtaTransactionManager
によって管理されます。Spring の JdbcTemplate
、Spring の JDBC 操作オブジェクト、JDBC DataSourceTransactionManager
によって内部的に使用されます。アプリケーションコードで直接使用することもできます。
getConnection(javax.sql.DataSource)
, releaseConnection(java.sql.Connection, javax.sql.DataSource)
, DataSourceTransactionManager
, JtaTransactionManager
, TransactionSynchronizationManager
修飾子と型 | フィールドと説明 |
---|---|
static int | CONNECTION_SYNCHRONIZATION_ORDER JDBC 接続をクリーンアップする TransactionSynchronization オブジェクトのオーダー値。 |
コンストラクターと説明 |
---|
DataSourceUtils() |
修飾子と型 | メソッドと説明 |
---|---|
static void | applyTimeout(StatementSE stmt, DataSourceSE dataSource, int timeout) 指定されたタイムアウト(存在する場合は、現在のトランザクションタイムアウトによってオーバーライドされます)を、指定された JDBC ステートメントオブジェクトに適用します。 |
static void | applyTransactionTimeout(StatementSE stmt, DataSourceSE dataSource) 現在のトランザクションタイムアウトがあれば、指定された JDBC ステートメントオブジェクトに適用します。 |
static void | doCloseConnection(ConnectionSE con, DataSourceSE dataSource) SmartDataSource が望まない限り、接続を閉じます。 |
static ConnectionSE | doGetConnection(DataSourceSE dataSource) 指定された DataSource から実際に JDBC 接続を取得します。 |
static void | doReleaseConnection(ConnectionSE con, DataSourceSE dataSource) 特定の DataSource から取得した特定の接続を実際に閉じます。 |
static ConnectionSE | getConnection(DataSourceSE dataSource) 指定された DataSource から接続を取得します。 |
static ConnectionSE | getTargetConnection(ConnectionSE con) 指定された接続の最も内側のターゲット接続を返します。 |
static boolean | isConnectionTransactional(ConnectionSE con, DataSourceSE dataSource) 指定された JDBC 接続がトランザクション対応かどうか、つまり Spring のトランザクション機能によって現在のスレッドにバインドされているかどうかを判断します。 |
static IntegerSE | prepareConnectionForTransaction(ConnectionSE con, TransactionDefinition definition) 特定のトランザクションセマンティクスで特定の接続を準備します。 |
static void | releaseConnection(ConnectionSE con, DataSourceSE dataSource) 外部で管理されていない(つまり、スレッドにバインドされていない)場合は、指定の DataSource から取得した指定の接続を閉じます。 |
static void | resetConnectionAfterTransaction(ConnectionSE con, IntegerSE previousIsolationLevel) 使用すべきではありません。 |
static void | resetConnectionAfterTransaction(ConnectionSE con, IntegerSE previousIsolationLevel, boolean resetReadOnly) トランザクションの後で、読み取り専用フラグと分離レベルに関して、指定された接続をリセットします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final int CONNECTION_SYNCHRONIZATION_ORDER
public static ConnectionSE getConnection(DataSourceSE dataSource) throws CannotGetJdbcConnectionException
たとえば DataSourceTransactionManager
を使用する場合など、現在のスレッドにバインドされている対応する接続を認識しています。トランザクション同期がアクティブな場合、接続をスレッドにバインドします。JTA
トランザクション内で実行する場合)。
dataSource
- から接続を取得する DataSourceCannotGetJdbcConnectionException
- 接続を取得する試みが失敗した場合 releaseConnection(java.sql.Connection, javax.sql.DataSource)
public static ConnectionSE doGetConnection(DataSourceSE dataSource) throws SQLExceptionSE
getConnection(javax.sql.DataSource)
と同じですが、元の SQLException をスローします。DataSourceTransactionManager
を使用する場合など、現在のスレッドにバインドされている対応する Connection を認識しているトランザクション同期がアクティブな場合(JTA トランザクション内など)は、接続をスレッドにバインドします。
TransactionAwareDataSourceProxy
によって直接アクセスされます。
dataSource
- から接続を取得する DataSourceSQLExceptionSE
- JDBC メソッドによってスローされた場合 doReleaseConnection(java.sql.Connection, javax.sql.DataSource)
@Nullable public static IntegerSE prepareConnectionForTransaction(ConnectionSE con, @Nullable TransactionDefinition definition) throws SQLExceptionSE
con
- 準備する接続 definition
- 適用するトランザクション定義 SQLExceptionSE
- JDBC メソッドによってスローされた場合 resetConnectionAfterTransaction(java.sql.Connection, java.lang.Integer, boolean)
, Connection.setTransactionIsolation(int)
SE, Connection.setReadOnly(boolean)
SEpublic static void resetConnectionAfterTransaction(ConnectionSE con, @Nullable IntegerSE previousIsolationLevel, boolean resetReadOnly)
con
- リセットする接続 previousIsolationLevel
- 復元する分離レベル(存在する場合)resetReadOnly
- 接続の読み取り専用フラグをリセットするかどうか prepareConnectionForTransaction(java.sql.Connection, org.springframework.transaction.TransactionDefinition)
, Connection.setTransactionIsolation(int)
SE, Connection.setReadOnly(boolean)
SE@DeprecatedSE public static void resetConnectionAfterTransaction(ConnectionSE con, @Nullable IntegerSE previousIsolationLevel)
resetConnectionAfterTransaction(Connection, Integer, boolean)
に置き換えられました。con
- リセットする接続 previousIsolationLevel
- 復元する分離レベル(存在する場合)public static boolean isConnectionTransactional(ConnectionSE con, @Nullable DataSourceSE dataSource)
con
- 確認する接続 dataSource
- 接続が取得された DataSource (null
の場合があります)public static void applyTransactionTimeout(StatementSE stmt, @Nullable DataSourceSE dataSource) throws SQLExceptionSE
stmt
- JDBC Statement オブジェクト dataSource
- 接続が取得された DataSourceSQLExceptionSE
- JDBC メソッドによってスローされた場合 Statement.setQueryTimeout(int)
SEpublic static void applyTimeout(StatementSE stmt, @Nullable DataSourceSE dataSource, int timeout) throws SQLExceptionSE
stmt
- JDBC Statement オブジェクト dataSource
- 接続が取得された DataSourcetimeout
- 適用するタイムアウト (または、トランザクションの外部でタイムアウトがない場合は 0)SQLExceptionSE
- JDBC メソッドによってスローされた場合 Statement.setQueryTimeout(int)
SEpublic static void releaseConnection(@Nullable ConnectionSE con, @Nullable DataSourceSE dataSource)
con
- 必要に応じて閉じる接続 (これが null
の場合、呼び出しは無視されます)dataSource
- 接続が取得された DataSource (null
の場合があります)getConnection(javax.sql.DataSource)
public static void doReleaseConnection(@Nullable ConnectionSE con, @Nullable DataSourceSE dataSource) throws SQLExceptionSE
releaseConnection(java.sql.Connection, javax.sql.DataSource)
と同じですが、元の SQLException をスローします。TransactionAwareDataSourceProxy
によって直接アクセスされます。
con
- 必要に応じて閉じる接続 (これが null
の場合、呼び出しは無視されます)dataSource
- 接続が取得された DataSource (null
の場合があります)SQLExceptionSE
- JDBC メソッドによってスローされた場合 doGetConnection(javax.sql.DataSource)
public static void doCloseConnection(ConnectionSE con, @Nullable DataSourceSE dataSource) throws SQLExceptionSE
SmartDataSource
が望まない限り、接続を閉じます。con
- 必要に応じて閉じる接続 dataSource
- 接続が取得された DataSourceSQLExceptionSE
- JDBC メソッドによってスローされた場合 Connection.close()
SE, SmartDataSource.shouldClose(Connection)
public static ConnectionSE getTargetConnection(ConnectionSE con)
con
- アンラップする接続プロキシ ConnectionProxy.getTargetConnection()