クラス DataSourceUtils
java.lang.ObjectSE
org.springframework.jdbc.datasource.DataSourceUtils
DataSource
SE から JDBC Connection
を取得するための静的メソッドを提供するヘルパークラス。たとえば、DataSourceTransactionManager
または JtaTransactionManager
によって管理される、Spring 管理のトランザクション Connection
の特別なサポートが含まれます。Spring の JdbcTemplate
、Spring の JDBC 操作オブジェクト、JDBC DataSourceTransactionManager
によって内部的に使用されます。アプリケーションコードで直接使用することもできます。
フィールドサマリー
修飾子と型フィールド説明static final int
JDBC 接続をクリーンアップする TransactionSynchronization オブジェクトのオーダー値。コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明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
指定された接続の最も内側のターゲット接続を返します。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) トランザクションの後で、読み取り専用フラグと分離レベルに関して、指定された接続をリセットします。
フィールドの詳細
CONNECTION_SYNCHRONIZATION_ORDER
public static final int CONNECTION_SYNCHRONIZATION_ORDERJDBC 接続をクリーンアップする TransactionSynchronization オブジェクトのオーダー値。- 関連事項:
コンストラクターの詳細
DataSourceUtils
public DataSourceUtils()
メソッドの詳細
getConnection
public static ConnectionSE getConnection(DataSourceSE dataSource) throws CannotGetJdbcConnectionException 指定された DataSource から接続を取得します。SQLException を、チェックされていない汎用データアクセス例外の Spring 階層に変換し、コードの呼び出しを簡略化し、より意味のある例外を作成します。たとえば、
DataSourceTransactionManager
を使用する場合、現在のスレッドにバインドされている対応する接続を認識します。トランザクション同期がアクティブな場合 (たとえば、JTA
トランザクション内で実行している場合)、スレッドに接続をバインドします。- パラメーター:
dataSource
- から接続を取得する DataSource- 戻り値:
- 指定された DataSource からの JDBC 接続
- 例外:
CannotGetJdbcConnectionException
- 接続を取得する試みが失敗した場合- 関連事項:
doGetConnection
指定された DataSource から実際に JDBC 接続を取得します。getConnection(javax.sql.DataSource)
と同じですが、元の SQLException をスローします。たとえば、
DataSourceTransactionManager
を使用する場合、現在のスレッドにバインドされている対応する接続を認識します。トランザクション同期がアクティブな場合 (たとえば、JTA トランザクションの場合)、スレッドに接続をバインドします。TransactionAwareDataSourceProxy
によって直接アクセスされます。- パラメーター:
dataSource
- から接続を取得する DataSource- 戻り値:
- 指定された DataSource からの JDBC 接続
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
prepareConnectionForTransaction
@Nullable public static IntegerSE prepareConnectionForTransaction(ConnectionSE con, @Nullable TransactionDefinition definition) throws SQLExceptionSE 特定のトランザクションセマンティクスで特定の接続を準備します。- パラメーター:
con
- 準備する接続definition
- 適用するトランザクション定義- 戻り値:
- 以前の分離レベル(存在する場合)
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
resetConnectionAfterTransaction
public static void resetConnectionAfterTransaction(ConnectionSE con, @Nullable IntegerSE previousIsolationLevel, boolean resetReadOnly) トランザクションの後で、読み取り専用フラグと分離レベルに関して、指定された接続をリセットします。- パラメーター:
con
- リセットする接続previousIsolationLevel
- 復元する分離レベル(存在する場合)resetReadOnly
- 接続の読み取り専用フラグをリセットするかどうか- 導入:
- 5.2.1
- 関連事項:
resetConnectionAfterTransaction
@DeprecatedSE public static void resetConnectionAfterTransaction(ConnectionSE con, @Nullable IntegerSE previousIsolationLevel) 使用すべきではありません。トランザクションの後で、読み取り専用フラグと分離レベルに関して、指定された接続をリセットします。- パラメーター:
con
- リセットする接続previousIsolationLevel
- 復元する分離レベル(存在する場合)
isConnectionTransactional
public static boolean isConnectionTransactional(ConnectionSE con, @Nullable DataSourceSE dataSource) 指定された JDBC 接続がトランザクション対応かどうか、つまり Spring のトランザクション機能によって現在のスレッドにバインドされているかどうかを判断します。- パラメーター:
con
- 確認する接続dataSource
- 接続が取得された DataSource (null
の場合があります)- 戻り値:
- 接続がトランザクションかどうか
- 関連事項:
applyTransactionTimeout
public static void applyTransactionTimeout(StatementSE stmt, @Nullable DataSourceSE dataSource) throws SQLExceptionSE 現在のトランザクションタイムアウトがあれば、指定された JDBC ステートメントオブジェクトに適用します。- パラメーター:
stmt
- JDBC Statement オブジェクトdataSource
- 接続が取得された DataSource- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
applyTimeout
public static void applyTimeout(StatementSE stmt, @Nullable DataSourceSE dataSource, int timeout) throws SQLExceptionSE 指定されたタイムアウト(存在する場合は、現在のトランザクションタイムアウトによってオーバーライドされます)を、指定された JDBC ステートメントオブジェクトに適用します。- パラメーター:
stmt
- JDBC Statement オブジェクトdataSource
- 接続が取得された DataSourcetimeout
- 適用するタイムアウト (または、トランザクションの外部でタイムアウトがない場合は 0)- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
releaseConnection
外部で管理されていない(つまり、スレッドにバインドされていない)場合は、指定の DataSource から取得した指定の接続を閉じます。- パラメーター:
con
- 必要に応じて閉じる接続 (これがnull
の場合、呼び出しは無視されます)dataSource
- 接続が取得された DataSource (null
の場合があります)- 関連事項:
doReleaseConnection
public static void doReleaseConnection(@Nullable ConnectionSE con, @Nullable DataSourceSE dataSource) throws SQLExceptionSE 特定の DataSource から取得した特定の接続を実際に閉じます。releaseConnection(java.sql.Connection, javax.sql.DataSource)
と同じですが、元の SQLException をスローします。TransactionAwareDataSourceProxy
によって直接アクセスされます。- パラメーター:
con
- 必要に応じて閉じる接続 (これがnull
の場合、呼び出しは無視されます)dataSource
- 接続が取得された DataSource (null
の場合があります)- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
doCloseConnection
public static void doCloseConnection(ConnectionSE con, @Nullable DataSourceSE dataSource) throws SQLExceptionSE SmartDataSource
が望まない限り、接続を閉じます。- パラメーター:
con
- 必要に応じて閉じる接続dataSource
- 接続が取得された DataSource- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getTargetConnection
指定された接続の最も内側のターゲット接続を返します。指定された接続がプロキシの場合、非プロキシ接続が見つかるまでラップが解除されます。それ以外の場合、渡された接続はそのまま返されます。- パラメーター:
con
- アンラップする接続プロキシ- 戻り値:
- 最も内側のターゲット接続、またはプロキシがない場合は渡された接続
- 関連事項:
resetConnectionAfterTransaction(Connection, Integer, boolean)
を推奨