クラス ExtendedConnectionDataSourceProxy

java.lang.ObjectSE
org.springframework.batch.item.database.ExtendedConnectionDataSourceProxy
実装されたすべてのインターフェース:
WrapperSECommonDataSourceSEDataSourceSEorg.springframework.beans.factory.InitializingBeanorg.springframework.jdbc.datasource.SmartDataSource

public class ExtendedConnectionDataSourceProxy extends ObjectSE implements org.springframework.jdbc.datasource.SmartDataSource, org.springframework.beans.factory.InitializingBean
Connection.close() が呼び出された場合でも、各使用後に閉じられない単一の JDBC 接続を維持できる SmartDataSource の実装。

Spring の PlatformTransactionManager 実装のいずれかと併用すると、複数のトランザクションにわたって接続を開いたままにすることができます。

Spring コアの SingleConnectionDataSource 実装に大まかに基づいています。JdbcCursorItemReader とともに使用して、トランザクションの境界を越えて開いたままの接続を提供することを目的としています。カーソルが存続する間開いたままであり、残りのステップ処理のメイントランザクションと共有できます。

接続に対してクローズ抑制がオンになると、最初の getConnection() 呼び出しに対して返されます。getConnection() への後続の呼び出しは、クローズ抑制された ConnectionSE に対して shouldClose(Connection) を呼び出して接続をクローズする必要があるかどうかを DataSourceUtils が照会するまで、ラップされた DataSourceSE から新しい接続を取得します。その時点で、サイクルが最初からやり直され、次の getConnection() 呼び出しでクローズ抑制されている ConnectionSE が返されます。これにより、クローズ抑制された ConnectionSE を継承データアクセスプロセスのメイン ConnectionSE として使用できます。stopCloseSuppression(Connection) を呼び出すと、クローズ抑制がオフになります。

このクラスはマルチスレッドに対応していません。

返される接続は、物理 ConnectionSE ではなくクローズ抑制プロキシになります。これをネイティブ OracleConnection などにキャストできなくなることに注意してください。Wrapper.unwrap(Class)SE を使用する必要があります。

導入:
2.0
作成者:
Thomas Risberg, Mahmoud Ben Hassine
関連事項: