public class ExtendedConnectionDataSourceProxy
extends java.lang.Object
implements org.springframework.jdbc.datasource.SmartDataSource, org.springframework.beans.factory.InitializingBean
Connection.close()
が呼び出された場合でも、使用するたびに閉じられない単一の JDBC 接続を維持できる SmartDataSource
の実装。Spring の PlatformTransactionManager
実装のいずれかと一緒に使用すると、接続を複数のトランザクションにわたって開いたままにすることができます。Spring コアの SingleConnectionDataSource 実装に大まかに基づいています。JdbcCursorItemReader
とともに使用して、トランザクションの境界を越えて開いたままの接続を提供することを目的としています。カーソルが存続する間開いたままであり、残りのステップ処理のメイントランザクションと共有できます。
接続に対してクローズ抑制がオンになると、最初の getConnection()
呼び出しでクローズ抑制が返されます。getConnection()
への後続の呼び出しは、DataSourceUtils
がクローズ抑制された Connection
に対して shouldClose(Connection)
を呼び出すことによって接続を閉じる必要があるかどうかを照会するまで、ラップされた DataSource
から新しい接続を取得します。その時点で、サイクルが再び開始され、次の getConnection()
呼び出しでは、クローズ抑制されている Connection
が返されます。これにより、厳密に抑制された Connection
を、拡張データアクセスプロセスのメイン Connection
として使用できます。stopCloseSuppression(Connection)
を呼び出すと、クローズ抑制がオフになります。
このクラスはマルチスレッドに対応していません。
返される接続は、物理的な Connection
ではなく、クローズ抑制プロキシになります。これをネイティブ OracleConnection
などにキャストすることはできなくなることに注意してください。Wrapper.unwrap(Class)
を使用する必要があります。
getConnection()
, Connection.close()
、DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)
、Wrapper.unwrap(Class)
コンストラクターと説明 |
---|
ExtendedConnectionDataSourceProxy() JavaBean スタイルを使用して構成された場合に使用する引数コンストラクターはありません。 |
ExtendedConnectionDataSourceProxy(javax.sql.DataSource dataSource) ラップする DataSource をパラメーターとして受け取るコンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected java.sql.Connection | getCloseSuppressingConnectionProxy(java.sql.Connection target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。 |
java.sql.Connection | getConnection() |
java.sql.Connection | getConnection(java.lang.String username, java.lang.String password) |
int | getLoginTimeout() |
java.io.PrintWriter | getLogWriter() |
java.util.logging.Logger | getParentLogger() JDK7 との互換性のために追加されました。 |
boolean | isCloseSuppressionActive(java.sql.Connection connection) 指定された Connection に対してアクティブ化されているクローズ抑制のステータスを返します |
boolean | isWrapperFor(java.lang.Class<?> iface) Java 5 の互換性を維持するために、自己およびデリゲートのクラスの「浅い」非再帰的チェックのみを実行します。 |
void | setDataSource(javax.sql.DataSource dataSource) ラップされる DataSource の Setter。 |
void | setLoginTimeout(int seconds) |
void | setLogWriter(java.io.PrintWriter out) |
boolean | shouldClose(java.sql.Connection connection) |
void | startCloseSuppression(java.sql.Connection connection) |
void | stopCloseSuppression(java.sql.Connection connection) |
<T> T | unwrap(java.lang.Class<T> iface) 提供されたパラメータークラスにキャストできる場合は、self または delegate のいずれかを(この順序で)返します。 |
public ExtendedConnectionDataSourceProxy()
public ExtendedConnectionDataSourceProxy(javax.sql.DataSource dataSource)
DataSource
をパラメーターとして受け取るコンストラクター。dataSource
- 使用する DataSourcepublic void setDataSource(javax.sql.DataSource dataSource)
DataSource
の Setter。dataSource
- DataSourcepublic boolean shouldClose(java.sql.Connection connection)
org.springframework.jdbc.datasource.SmartDataSource
の shouldClose
SmartDataSource
public boolean isCloseSuppressionActive(java.sql.Connection connection)
Connection
に対してアクティブ化されているクローズ抑制のステータスを返します connection
- クローズ抑制ステータスがリクエストされる Connection
public void startCloseSuppression(java.sql.Connection connection)
connection
- クローズ抑制がリクエストされる Connection
public void stopCloseSuppression(java.sql.Connection connection)
connection
- クローズサプレッションをオフにする必要がある Connection
public java.sql.Connection getConnection() throws java.sql.SQLException
javax.sql.DataSource
の getConnection
java.sql.SQLException
public java.sql.Connection getConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLException
javax.sql.DataSource
の getConnection
java.sql.SQLException
public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
javax.sql.CommonDataSource
の getLogWriter
java.sql.SQLException
public int getLoginTimeout() throws java.sql.SQLException
javax.sql.CommonDataSource
の getLoginTimeout
java.sql.SQLException
public void setLogWriter(java.io.PrintWriter out) throws java.sql.SQLException
javax.sql.CommonDataSource
の setLogWriter
java.sql.SQLException
public void setLoginTimeout(int seconds) throws java.sql.SQLException
javax.sql.CommonDataSource
の setLoginTimeout
java.sql.SQLException
protected java.sql.Connection getCloseSuppressingConnectionProxy(java.sql.Connection target)
target
- ラップする元の接続 public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
java.sql.Wrapper
の isWrapperFor
java.sql.SQLException
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
java.sql.Wrapper
の unwrap
java.sql.SQLException
public void afterPropertiesSet() throws java.lang.Exception
org.springframework.beans.factory.InitializingBean
の afterPropertiesSet
java.lang.Exception
public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException
javax.sql.CommonDataSource
の getParentLogger
java.sql.SQLFeatureNotSupportedException