クラス DataSourceUtils

java.lang.ObjectSE
org.springframework.jdbc.datasource.DataSourceUtils

public abstract class DataSourceUtils extends ObjectSE
DataSourceSE から JDBC Connection を取得するための静的メソッドを提供するヘルパークラス。たとえば、DataSourceTransactionManager または JtaTransactionManager によって管理される、Spring 管理のトランザクション Connection の特別なサポートが含まれます。

Spring の JdbcTemplate、Spring の JDBC 操作オブジェクト、JDBC DataSourceTransactionManager によって内部的に使用されます。アプリケーションコードで直接使用することもできます。

作成者:
Rod Johnson, Juergen Hoeller
関連事項:
  • フィールドの詳細

    • CONNECTION_SYNCHRONIZATION_ORDER

      public static final int CONNECTION_SYNCHRONIZATION_ORDER
      JDBC 接続をクリーンアップする TransactionSynchronization オブジェクトのオーダー値。
      関連事項:
  • コンストラクターの詳細

    • DataSourceUtils

      public DataSourceUtils()
  • メソッドの詳細

    • getConnection

      public static ConnectionSE getConnection(DataSourceSE dataSource) throws CannotGetJdbcConnectionException
      指定された DataSource から接続を取得します。SQLException を、チェックされていない汎用データアクセス例外の Spring 階層に変換し、コードの呼び出しを簡略化し、より意味のある例外を作成します。

      たとえば、DataSourceTransactionManager を使用する場合、現在のスレッドにバインドされている対応する接続を認識します。トランザクション同期がアクティブな場合 (たとえば、JTA トランザクション内で実行している場合)、スレッドに接続をバインドします。

      パラメーター:
      dataSource - から接続を取得する DataSource
      戻り値:
      指定された DataSource からの JDBC 接続
      例外:
      CannotGetJdbcConnectionException - 接続を取得する試みが失敗した場合
      関連事項:
    • doGetConnection

      public static ConnectionSE doGetConnection(DataSourceSE dataSource) throws SQLExceptionSE
      指定された DataSource から実際に JDBC 接続を取得します。getConnection(DataSource) と同じですが、元の SQLException をスローします。

      たとえば、DataSourceTransactionManager を使用する場合、現在のスレッドにバインドされている対応する接続を認識します。トランザクション同期がアクティブな場合 (たとえば、JTA トランザクションの場合)、スレッドに接続をバインドします。

      TransactionAwareDataSourceProxy によって直接アクセスされます。

      パラメーター:
      dataSource - から接続を取得する DataSource
      戻り値:
      指定された DataSource からの JDBC 接続
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • prepareConnectionForTransaction

      public static @Nullable IntegerSE prepareConnectionForTransaction(ConnectionSE con, @Nullable TransactionDefinition definition) throws SQLExceptionSE
      特定のトランザクションセマンティクスで特定の接続を準備します。
      パラメーター:
      con - 準備する接続
      definition - 適用するトランザクション定義
      戻り値:
      以前の分離レベル(存在する場合)
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
      • prepareConnectionForTransaction(Connection, int, boolean)
    • resetConnectionAfterTransaction

      public static void resetConnectionAfterTransaction(ConnectionSE con, @Nullable IntegerSE previousIsolationLevel, boolean resetReadOnly)
      トランザクションの後で、読み取り専用フラグと分離レベルに関して、指定された接続をリセットします。
      パラメーター:
      con - リセットする接続
      previousIsolationLevel - 復元する分離レベル(存在する場合)
      resetReadOnly - 接続の読み取り専用フラグをリセットするかどうか
      導入:
      5.2.1
      関連事項:
    • resetConnectionAfterTransaction

      @DeprecatedSE(since="5.1.11") 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 - 接続が取得された DataSource
      timeout - 適用するタイムアウト (または、トランザクションの外部でタイムアウトがない場合は 0)
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • releaseConnection

      public static void releaseConnection(@Nullable ConnectionSE con, @Nullable DataSourceSE dataSource)
      外部で管理されていない(つまり、スレッドにバインドされていない)場合は、指定の DataSource から取得した指定の接続を閉じます。
      パラメーター:
      con - 必要に応じて閉じる接続 (これが null の場合、呼び出しは無視されます)
      dataSource - 接続が取得された DataSource (null の場合があります)
      関連事項:
    • doReleaseConnection

      public static void doReleaseConnection(@Nullable ConnectionSE con, @Nullable DataSourceSE dataSource) throws SQLExceptionSE
      特定の DataSource から取得した特定の接続を実際に閉じます。releaseConnection(Connection, 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

      public static ConnectionSE getTargetConnection(ConnectionSE con)
      指定された接続の最も内側のターゲット接続を返します。指定された接続がプロキシの場合、非プロキシ接続が見つかるまでラップが解除されます。それ以外の場合、渡された接続はそのまま返されます。
      パラメーター:
      con - アンラップする接続プロキシ
      戻り値:
      最も内側のターゲット接続、またはプロキシがない場合は渡された接続
      関連事項: